C++向量的分配 双 = 安全?

assignment of C++ vector of vector of double = safe?

本文关键字:安全 分配 向量 C++      更新时间:2023-10-16

下面的赋值是否总是在既没有内存泄漏也没有未初始化甚至未分配的内存的情况下执行?

生成的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++ 编码人员都会这样做,始终确保每段代码都确保基本的异常安全。此外,最好在注释中指定哪些异常安全确保每个功能。

你的问题非常中肯。异常安全使容器实现变得不平凡。

虽然不一定是最佳实践,但向量的向量是完全有效的。