是否可以迭代const vector<int>
?或者,这是否是不受欢迎的?
鉴于我有函数getIntVector
,它返回vector<int>
我可以使用以下内容迭代它:
vector<int> vec = getIntVector();
vector<int>::iterator it;
for (it=vec.begin();it!=vec.end();++it) {}
但我无法做到以下几点:
const vector<int> vec = getIntVector();
vector<int>::iterator it;
// complier throws error below
for (it=vec.begin();it!=vec.end();++it) {}
我的想法是,不会通过将其声明为const
来重新创建向量....
答案 0 :(得分:7)
1)您需要vector<int>::const_iterator
来遍历“const”容器
2)你的矢量仍然会被复制;这可能是也可能不是可取的。我想返回引用...
答案 1 :(得分:7)
如果您正在使用C ++ 11,则可以使用auto
,并让编译器从初始化中推断出类型:
for (auto it=vec.begin(); it!=vec.end(); ++it)
//^^^^ compiler will infer the type using the initialization expression
但是,在C ++ 03中,您必须使用const_iterator
。
答案 2 :(得分:5)
答案 3 :(得分:4)
您可以使用vector<int>::const_iterator
。