总结
某些对vector对象的操作会使迭代器失效
(1)已知的一个限制是不能在范围for循环中向vector对象添加元素
(2)另一个限制是任何一种可能改变vector对象的操作比如push-back,都会使该vector对象的迭代器失效。
it -> num和 (*it).num表达意思一样 都是解引用it,调用对象的num成员
cbegin 和cend
auto it3 = v.cbegin(); //it3的类型是vector<int>::const_iterator
iterator和const_iterator
vector<int>::iterator it //it能读写vector<int>的元素
vector<int>::const_iterator it2 //it2只能读vector<int>的元素
string::iterator it3 //it3能读写string对象中的字符
string::const_iterator it4 //it4只能能读写string对象中的字符
练习3.22
#include "stdafx.h"
#include<iostream>
#include<string>
#include<vector>
//#include <ctype.h>
using namespace::std;
int main()
{
string str("i love you");
for (auto i = str.begin(); i != str.end(); ++i)
{
*i = toupper(*i);
}
cout << str << endl;
system("pause");
return 0;
}
练习3.23
#include "stdafx.h"
#include<iostream>
#include<string>
#include<vector>
//#include <ctype.h>
using namespace::std;
int main()
{
vector<int> num{1,2,3,4,5,6,7,8,9,10};
for (auto i = num.begin(); i != num.end(); ++i)
{
*i = (*i)*2;
cout << *i << endl;
}
system("pause");
return 0;
}