Cri*_*ter -2 c++ iterator vector
我有以下for循环,它遍历一个传递给引用传递给const的向量
void PrintVector(const vector<string>& myVector) {
for(vector<string>::iterator itr = myVector.begin(); itr != myVector.end(); ++itr)
someFunctionThatTakesAPassByReferenceToConstParameter(itr);
}
Run Code Online (Sandbox Code Playgroud)
迭代器itr
作为引用传递给函数someFunctionThatTakesAPassByReferenceToConstParameter()
.因此,可以保证此函数不会更改迭代器对象.即使这是有保证的,为什么代码不能编译?
编辑:我知道我可以使用const_iterator.但我想知道为什么这不编译.
小智 5
我知道我可以使用const_iterator.但我想知道为什么这不编译.
向量类将具有两个不同的"开始"函数(在constness上重载).就像是:
const_iterator begin() const { return ...; }
Run Code Online (Sandbox Code Playgroud)
和
iterator begin() { return ...; }
Run Code Online (Sandbox Code Playgroud)
由于你有一个对向量的const引用,前者将被调用,并且const_iterator不能转换为迭代器(因为迭代器将能够修改"指向"的值).
归档时间: |
|
查看次数: |
211 次 |
最近记录: |