假设:
vector<string> mvec;
上面有一些元素
部分代码:
for(vector<string>::iterator it1 = mvec.begin(); it1 != mvec.end(); ++it1) {
for(string::iterator it2 = it1->begin(); it2 != it1->end(); ++it2)
自:
it1-&gt; begin()deference对象,然后调用该对象的成员函数begin(),该对象是it1指向?
的字符串?
答案 0 :(得分:5)
it1
指向存储在向量中的字符串类的实例。
答案 1 :(得分:5)
由于it1
是iterator
vector<string>
,因此当您取消引用它时,您将获得string
。
答案 2 :(得分:2)
此代码:
#include <vector>
#include <string>
#include <iostream>
using namespace std;
int main() {
vector <string> mvec;
mvec.push_back("foo");
mvec.push_back("bar");
for(vector<string>::iterator it1 = mvec.begin(); it1 != mvec.end(); ++it1) {
for(string::iterator it2 = it1->begin(); it2 != it1->end(); ++it2) {
cout << * it2 << endl;
}
}
}
打印:
f
o
o
b
a
r
第一个迭代器使您可以访问向量中的字符串,第二个使用字符串中的字符。
答案 3 :(得分:1)
是的,它是string
,它也是一个容器,所以取消引用it2
可以获得它的个性化字符。
答案 4 :(得分:1)
就像其他人所说的那样,取消引用it1
会得到string
。考虑到it1
不是指针,但iterator
类重载operator->
,这可能看起来很奇怪,在这种情况下,所有投注都将关闭将发生的事情。