以下将元素添加到 c++ vector 的方法有什么区别
What's the difference between the following ways of adding elements to a c++ vector
片段 1:以下片段打印出 0 1 但 returns 一个空向量。
vector<int> trial() {
vector<int> ret;
ret.reserve(2);
ret[0] = 0;
ret[1] = 1;
cout << ret[0] << " " << ret[1] << "\n";
return ret;
}
代码段 2:以下代码段打印出 0 1 和 returns 向量包含 {0,1}。
vector<int> trial() {
vector<int> ret;
ret.push_back(0);
ret.push_back(1);
cout << ret[0] << " " << ret[1] << "\n";
return ret;
}
为什么片段 1 不像片段 2 那样工作。如果我要保留内存并向向量添加值。
reserve()
不改变向量大小,你要的就是resize()
它。
片段 1:以下片段打印出 0 1 但 returns 一个空向量。
vector<int> trial() {
vector<int> ret;
ret.reserve(2);
ret[0] = 0;
ret[1] = 1;
cout << ret[0] << " " << ret[1] << "\n";
return ret;
}
代码段 2:以下代码段打印出 0 1 和 returns 向量包含 {0,1}。
vector<int> trial() {
vector<int> ret;
ret.push_back(0);
ret.push_back(1);
cout << ret[0] << " " << ret[1] << "\n";
return ret;
}
为什么片段 1 不像片段 2 那样工作。如果我要保留内存并向向量添加值。
reserve()
不改变向量大小,你要的就是resize()
它。