C++序列容器之Vector容器操作(1)~~操作vector元素的函数

#include <iostream>
#include
<vector>
#include
<iterator>
#include
<algorithm>
#include
<stdexcept>//抛出异常
using std::vector;
using namespace std;
int main()
{
const int SIZE=6;
int arry[SIZE]={1,2,3,4,5,6};
/*
*用重载的vector构造函数初始化interges,它的实参是两个迭代器。指向数组的指针能够用作迭代器.
*z这里用arry数组从arry到arry+size范围内的所有元素初始化
/
*/
vector
<int> integers(arry,arry+SIZE);
ostream_iterator
<int> output(cout," ");
/*
*用cout输出用单个空格分隔的整数。
*构造函数第一个实参指定了输出流,第二个实参是一个字符串,指定输出值的分隔符。
*/
cout
<<"Vector integers contains:";
copy(integers.begin(),integers.end(),output);
//copy算法将vector全部对象intergers全部输出到标准输出
integers[0]=7;
integers.at(
2)=10;
integers.insert(integers.begin()
+1,22);//这里将22插入integers.begin()+1这个迭代器所指的位置
cout<<endl;
cout
<<integers.front()<<" "<<integers.back()<<endl;
/*注意front和begin的区别
*front函数返回vector中第一个元素的引用.而begin函数返回一个随机访问的迭代器,指向vector第一个元素
*back返回最后一个元素的引用,而end函数返回一个指向vector末尾(最后一个元素之后的那个位置)迭代器
*/
try
{
integers.at(
100)=77;
}
catch(out_of_range &OutOfRange)
{
cout
<<"\n\nException"<<OutOfRange.what();
}

/*
*下面使用了两个erase函数,所有第一类容器都支持他.下面第一个函数,迭代器实参后指定要删除的那个元素的位置(vecor开始出的那个位置)
第二个函数指定删除的范围从第一个位置开始,到第二个实参指定的位置(不包含这个位置).这个例子就是删除全部元素
*/
integers.erase(integers.begin());
cout
<<"\n\nafter erase first elm:";
copy(integers.begin(),integers.end(),output);
integers.erase(integers.begin(),integers.end());
cout
<<"\n\nafter erase all elm";
copy(integers.begin(),integers.end(),output);

integers.insert(integers.begin(),arry,arry
+SIZE);
cout
<<"after insert:";
copy(integers.begin(),integers.end(),output);

integers.clear();
cout
<<"\n\nafter clear"<<(integers.empty()?" is ":"is not")<<"empty"<<endl;
return 0;
}

posted @ 2011-07-27 22:39  又是一年夏天  阅读(1117)  评论(0)    收藏  举报