是否可以迭代const vector<int>?或者,这会不会是不受欢迎的吗?
鉴于我有一个getIntVector返回的函数,vector<int>我可以使用以下代码迭代它:
vector<int> vec = getIntVector();
vector<int>::iterator it;
for (it=vec.begin();it!=vec.end();++it) {}
Run Code Online (Sandbox Code Playgroud)
但我不能做到以下几点:
const vector<int> vec = getIntVector();
vector<int>::iterator it;
// complier throws error below
for (it=vec.begin();it!=vec.end();++it) {}
Run Code Online (Sandbox Code Playgroud)
我的想法是,通过将它声明为const...... 来重新创建向量.
如果您正在使用C++ 11,则可以使用auto,并让编译器从初始化推断出类型:
for (auto it=vec.begin(); it!=vec.end(); ++it)
//^^^^ compiler will infer the type using the initialization expression
Run Code Online (Sandbox Code Playgroud)
但是,在C++ 03中,您必须使用const_iterator.