C++向量的分配 双 = 安全?
assignment of C++ vector of vector of double = safe?
下面的赋值是否总是在既没有内存泄漏也没有未初始化甚至未分配的内存的情况下执行?
生成的a
中的任何单元格都不会与生成的b
中的单元格具有相同的地址?
无论向量有多少个向量,情况都会如此吗......我们拥有的载体?
vector<vector<double>> a, b;
// Give a and b random contents: empty, rectangular, ragged, etc.
a = b;
动态分配可能出现的所有内存问题都由std::vector
处理,operator=
完全按照您的想法进行操作。如果这是好的做法是另一个问题。
真是太惊喜了!没有人设置异常安全。
标准库中的每一段代码都遵循基本的异常安全。一些操作可确保强大的异常安全性,其他操作则不例外(无抛掷保证)。
对于矢量复制,标准没有说太多。但我知道libstdc++和libc++确保了强大的异常安全性。因此,要么操作成功并确保所有后置条件,要么引发异常并且向量的状态不更改。
在编程时,任何明智的 c++ 编码人员都会这样做,始终确保每段代码都确保基本的异常安全。此外,最好在注释中指定哪些异常安全确保每个功能。
你的问题非常中肯。异常安全使容器实现变得不平凡。
虽然不一定是最佳实践,但向量的向量是完全有效的。
相关文章:
- 使用自己的迭代器分配容器是否安全?
- 将正常函数的工作分配给多个线程是否安全
- char p[0]表示自动分配的缓冲区还是安全指针
- 如何在没有动态内存分配(堆)的情况下为可变大小数组(矢量)定义安全容器或视图
- 为什么在构造函数中将字符串分配给指针是安全的?
- 如何以类型的安全方式分配UINT32_T :: MAX和UINT64_T的最小值
- 重新分配指针阵列的一部分的安全方法
- C++向量的分配 双 = 安全?
- 安全分配堆栈分配的阵列
- 从函数安全返回和处理动态分配的内存,C++ 11
- 在释放内存之前,请始终重新分配内存 - C 是安全的吗?
- 重新分配独立的boost ::线程安全吗?
- C++多线程:线程安全的内存分配
- 将分配到std :: vector元素线程安全
- 此副本分配操作安全吗?
- 在分配之前,memset() 一个 std::itrator 变量是否安全
- C++ stl unordered_map,线程安全,其中每个线程仅访问其自己分配的键,并且可以编辑该值
- 是通过破坏 移动构造安全的移动分配
- 在条件下使用分配安全吗?C/C ,C#
- 如果通过委托给“malloc”的重载“new[]”分配,“释放”内存是否安全