声明集合中向量的大小.C++

smi*_*dha 1 c++ vector

using namespace std;

vector<vector<T> > vec_collection(3);

vec_collection[0]=vector<T>(12);
vec_collection[1]=vector<T>(3);
vec_collection[2]=vector<T>(14);
Run Code Online (Sandbox Code Playgroud)

假设我有3个向量的空集合,并且在初始化之后,我希望第一个,第二个和第三个向量具有特定大小12,3和14.以上代码段是否是声明其大小的正确方法?

Mat*_*lia 7

您的代码符合原则,创建了分离的临时vector实例,替换现有的零大小的实例,理论上这意味着对于每一行您都有一个构造函数调用(创建临时),一个复制构造函数调用(复制它在现有的vector)和析构函数调用(销毁临时).

虽然我认为一些优化可以使它实际上比听起来更好,但它更简单,几乎肯定更有效率:

using namespace std;

vector< vector<T> > vec_collection(3);

vec_collection[0].resize(12);
vec_collection[1].resize(3);
vec_collection[2].resize(14);
Run Code Online (Sandbox Code Playgroud)

另一方面,如果你需要这样的vectors总是具有固定大小,你应该用固定大小的数据结构替换它们(例如,struct包含三个C风格的数组或者std::array),就像@ sehe的答案一样.