【发布时间】:2021-01-16 07:16:00
【问题描述】:
我在一个类中有一个成员变量二维向量,像这样:
#include <vector>
...
class MyClass {
private:
int vector_size;
std::vector<std::vector<int> > vector_2d;
public:
MyClass(int _vector_size);
~MyClass();
} // class MyClass
我想知道实现构造函数MyClass(int _vector_size) 以完全初始化向量以由_vector_size 空向量组成的最佳方法。我现在的代码如下(这在我编写的用于测试正确性的小玩具程序中运行良好),但我觉得temp_vec 和常量temp_vec.clear() 的声明可能有点多余。
MyClass::MyClass(int _vector_size):
vector_size(_vector_size)
{
// initialize vector_2d
vector_2d.clear();
// push initialized 1D vectors
for (int i = 0; i < vector_size; ++i) {
std::vector<int> temp_vec;
temp_vec.clear();
vector_2d.push_back(temp_vec);
}
}
我还检查了其他帖子,例如 this、this 和 this,但我认为我的问题不同,因为我想要一个 指定大小的向量,它由 未指定大小的向量。
【问题讨论】:
-
旁注:清除已经为空的向量无效。它确实不初始化向量。这是在自动调用的构造函数中完成的。
-
向量在内部存储它们的大小(您可以使用
.size()方法获得),因此将大小单独存储在您的类中充其量是多余的,并且可能存在错误。当你想知道它的大小时,只需查询向量。
标签: c++ vector constructor stdvector