9.3顺序容器操作
2015-04-19 22:51
204 查看
笔记
c.begin();c.end();c.rbegin();c.rend();都是函数方法,返回一个iterator。
2.
c.push_back();c.push_front();其中
c.push_front只是用于list和deque容器类型
3.insert三种用法:
c++ c.insert(p,t);//iterator p前面插入值为t的元素,返回t所在的iteratior c.insert(p,n,t)//插入n个t,但是返回void C.insert(p,beg,end);//插入iteratior beg到end这个范围内的元素
由于方法一中insert函数返回指向新插入元素的迭代器。可以使用该返回值在容器中的指定位置重复插入元素
c++ list<string> lst; list<string>::iterator iter=lst.begin(); while(cin>>word) iter=lst.insert(iter,word);
4.在vector容器中添加元素可能导致整个容器的重新加载,这样的话,该容器涉及的所有迭代器都会失效。即使不需要重新加载整个容器,指向新插入元素后面的元素的迭代器也会失效。
任何insert或push操作都有可能导致迭代器失效。所以当循环将元素插入到vector或deque容器中时,不虚确保迭代器在每次循环后得到更新。
要避免存储end操作返回的迭代器
vector<int>::iterator first=v.begin(),last=v.end(); while(first!=last){ first=v.insert(++first,42); ++first;//advance *first* just past the element we add }
程序将end返回的迭代器值存储在last中,但是添加元素可能会是的容器更新,存储在last中的迭代器失效,从而造成死循环。
while循环应该改为
while(first!=v.end())
5.关系操作符。比较的容器必须有相同的容器类型,而且要有相同的元素类型。
容器的比较是基于元素内元素的比较。容器的比较实用了元素类型定义的同一个操作关系符。
如容器是 vector,那么两个容器的比较方法就用的string的比较方法,规则相同。
当元素类型是类类型的话,如
vector<Sales_item>,若Sales_item没有定义
<或者
>这样的关系运算符的话,就不能进行比较。
6.容器的大小操作:
c.size() 返回c中的元素个数。返回类型为c::size_type
c.max_size() 返回最多能容纳多少元素。 返回类型为c::size_type
c.empty() 返回bool值,空就返回1
c.resize(n) 调整容器大小,使其能够容纳n个元素。若n
习题
9.19vector<int>::iterator iter=iv.begin(); while(iter!=iv.begin()+iv.size()/2){ if(*iter==some_val){ iter=iv.insert(iter,2*some_val); iter+=2; } else ++iter; }
注意:
1)循环的判定条件是容器的中点,但是由于每一次循环都可能要插入元素,会导致容器的迭代器失效,所以每次循环都要计算,而不是将iv的中点迭代器存储下来
2)iter+=2;是因为insert(iter,2*some_val);是将元素插在iter这个迭代器之前,返回新元素的迭代器。+1就指向了原来的iter,再+1才会指向原来iter之后的元素,故+2。
9.20
cin.clear()用法
9.26使用eraser删除vector容器中的欧数值
int ia[]={0,1,1,2,3,5,8,13,21,55,89}; vector<int> odd_vector(ia,ia+11); vector<int>::iterator odd=odd_vector.begin(); while(odd!=odd_vector.end()){ if(*odd%2==0) odd=odd_vector.erase(odd);//eraser函数返回指向被删除元素后面的元素的迭代器,所以不用odd++;一定别忘记用它来更新odd迭代器 else odd++; }
相关文章推荐
- 9.3 顺序容器操作
- C++ primer 9.3 顺序容器的操作
- 9.3 顺序容器的操作
- 9.3顺序容器操作
- C++ Primer 学习笔记_29_STL实践与分析(3) --顺序容器的操作(下)
- 《C++ Primer》读书笔记第九章-2-顺序容器操作 And vector增长问题
- c++中在顺序容器中访问、插入、删除元素的操作
- 《C++ Primer》读书笔记-第九章 03 顺序容器操作
- c++顺序容器的操作
- 9.1——顺序容器,迭代器,顺序容器操作
- C++语法基础--顺序容器(三)--关系操作符,容器大小的操作,访问元素,删除元素,查找元素
- STL总结(一)顺序容器的操作
- STL顺序容器操作5
- STL学习--顺序容器操作
- 第9章 顺序容器的操作
- C++顺序容器操作
- 顺序容器的操作
- STL顺序容器操作6
- C++顺序容器的操作
- 顺序容器:删除元素的操作