例:
编写程序读入一组 string 类型的数据,并将它们存储在vector 中。接着,把该 vector 对象复制给一个字符指 针数组。为 vector 中的每个元素创建一个新的字符数 组,并把该 vector 元素的数据复制到相应的字符数组 中,最后把指向该数组的指针插入字符指针数组。
1 #include<iostream> 2 #include<string> 3 #include<vector> 4 5 using namespace std; 6 7 int main() { 8 vector<int> vect; 9 int vectCnt; 10 11 cout << "please input:"<<endl; 12 while (cin >> vectCnt) { 13 vect.push_back(vectCnt); 14 } 15 16 int *pTemp = new int[vect.size()]; 17 int *p = pTemp; 18 for (vector<int>::iterator iter = vect.begin(); iter != vect.end(); ++iter, ++p) { 19 *p = *iter; 20 cout << *p << endl; 21 } 22 23 delete [] pTemp; 24 return 0; 25 }
容器可以直接解引用的原理在于:
迭代器这一概念本身就是重载过operator * 用来解引用得到元素的,这和是不是vector无关,不仅是vector,queue等等其他类型迭代器全部都是要解引用的。所以不必谈“怎么知道”,迭代器全部都要解引用,除非你不是想用它来得到元素。