C++ 向量 - push_back

Sim*_*ity 1 c++ vector push-back

在 C++ Primer 一书的第 (3) 章中,有以下 for 循环将向量中的元素重置为零。

vector<int> ivec; //UPDATE: vector declaration
for (vector<int>::size_type ix = 0; ix ! = ivec.size(); ++ix)
ivec[ix] = 0;
Run Code Online (Sandbox Code Playgroud)

for 循环是否真的0为元素赋值,还是我们必须使用该push_back函数?

那么,以下内容有效吗?

ivec[ix] = ix;
Run Code Online (Sandbox Code Playgroud)

谢谢。

Naw*_*waz 5

for 循环是否真的为元素分配了 0 值?或者,我们必须使用 push_back 函数?

ivec[ix] =0更新向量中现有元素的值,而push_back函数向向量添加新元素!

那么,以下内容有效吗?
ivec[ix] = ix;

它是完全有效的IF ix < ivec.size()

如果你使用iterator, 而不是 index会更好。像这样,

int ix = 0;
for(vector<int>::iterator it = ivec.begin() ; it != ivec.end(); ++it)
{ 
     *it = ix++; //or do whatever you want to do with "it" here!
}
Run Code Online (Sandbox Code Playgroud)

使用iteratorwith STL 是惯用的。更喜欢迭代器而不是索引!