C++初始化列表中的向量集大小或调整大小
C++ vector set size in initialization list or resize
以下哪一项更受欢迎/更有效率?
-
初始化列表:
class Trial { private: std::vector<int> _vec; public: Trial(size_t length) : _vec(length) { } };
-
调整:
class Trial { private: std::vector<int> _vec; public: Trial(size_t length) { _vec.resize(length); } };
我在生产代码中都见过这两种方法,但我也听说,如果您可以将一些工作委托给编译器,您应该这样做,所以我总是更喜欢第一个。
其中一个比另一个好吗?
后者通常首先默认构造向量,然后重新分配向量的存储以适应新的长度(如果大于默认值((有关汇编代码,请参阅此处(。相比之下,第一个变体只有一个分配(较少的汇编代码(。
请注意,编译器优化可能会很好地看穿这一点,但还有另一个原因(除了避免过早悲观(更喜欢第一个:通过显式初始化构造函数初始化列表(或内联(中的所有成员,您可以使用工具在意外未初始化某些内容时通知您。
相关文章:
- 在C++中调整向量中的索引
- 将 boost::odeint 与向量类一起使用,而无需调整向量的大小
- 如何按另一个向量的方向调整一个向量?
- C++初始化列表中的向量集大小或调整大小
- std::向量迭代器和调整大小/保留的奇怪/有趣行为
- 调整向量大小并检索值,这是否正确或在任何情况下都可能导致段错误?
- 如何调整作为结构或类成员的向量的大小?
- 调整STD ::向量的大小是否可以降低其能力
- 在具有容量/调整大小的类中初始化向量
- STD ::向量如何调整其内部缓冲区大小
- 将添加的列初始化为可调整大小的 2D 向量
- C++中向量容器的大小和调整大小函数
- 如何判断 std::vector 是否调整了自身大小,以及如何解释指向向量内值的指针不再有效
- 调整OpenCV Mat向量向量的大小时出乎意料的结果
- C++有没有一种方法可以将向量调整为特定的字符
- 调整向量的大小会导致 SEG 错误
- 在c++中我应该在哪里调整向量的大小
- 如何在Eigen3中调整向量的大小
- 调整向量数组的大小
- 在不调用构造函数的情况下调整c++向量的大小