[英]C++ member function called begin() question
假如說:
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-> begin()deference對象,然后調用該對象的成員函數begin(),哪個對象是it1指向?
串?
it1
指向存儲在向量中的字符串類的實例。
由於it1
是vector<string>
的iterator
,當你解除它時,你會得到一個string
。
這段代碼:
#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
第一個迭代器使您可以訪問向量中的字符串,第二個使用字符串中的字符。
是的,它是string
,它也是一個容器,所以取消引用it2
會得到它的個別字符。
像其他人所說的那樣,取消引用it1
會給你一個string
。 它可能看起來很奇怪,因為it1
不是一個指針,但iterator
類重載了operator->
,在這種情況下,所有的賭注都將關閉將要發生的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.