C++ Vector 序列容器 之 使用vector和迭代器

类模版vector提供的数据结构具有随机访问连续的内存位置。这样可以通过下标运算符[]高效直接访问vector中的任何一个元素。就像C、C++中原始数组那样。当容器中的数据必须方便的根据下标访问或者需要排序。最长使用的是类模版vector。当vector的内存耗尽,会分配一块更大的内存,将原来的数据复制到新的内存并销毁旧的内存。

提示:选择vector容器可以实现最佳的随机访问性能。

#include <iostream>
using namespace std;
#include
<vector>
using std::vector;//为了用类模版vector,必须包含这个头文件
template<typename T> void printvector(const vector<T> &integers2);
int main()
{
const int size=6;
int arry[size]={1,2,3,4,5,6};
vector
<int> intergers;
cout
<<"The initial size of intergers is: "<<intergers.size()
<<"\nThe inttial capacity of intial is: "<<intergers.capacity();
intergers.push_back(
2);
intergers.push_back(
3);
intergers.push_back(
4);
cout
<<"\nThe size of intergers is "<<intergers.size()
<<"\nthe capacity of intergers is "<<intergers.capacity();
//上面演示了vector 的size和capacity函数的用法.
//capacity返回vector在动态改变大小以容纳更多元素之前能保存的元素数量
cout<<"\nOutput intergers:";
for (int *ptr=arry;ptr!=arry+size;ptr++)//arry+size 指向6
{
cout
<<*ptr<<' ';
}
cout
<<endl;
for (int i=0;i<=size;i++)//这个结果看截图,我想可能是C++专门让最后一个元素和下一个位置元素相等。
{
cout
<<" "<<*(arry+i);
}

cout
<<endl;
cout
<<"\nOUTput vector using interator notion:";
printvector(intergers);

cout
<<"\nReversed contents of vector intergers:";
vector
<int>::reverse_iterator re;//这里声明一个reverse_iterator,可用于逆向迭代vector。
//和begin和end一样.rbegin和rend函数根据容器是否为常量返回一个const_reverse_iterator或reverse_iterator
vector<int>::reverse_iterator temiterator=intergers.rend();

for (re=intergers.rbegin();re!=temiterator;++re)
{
cout
<<*re<<' ';
}
cout
<<endl;

return 0;

}
template
<typename T>
void printvector(const vector<T> &integers2)
{
typename vector
<T>::const_iterator ci;

for(ci=integers2.begin();
ci
!=integers2.end();ci++)
cout
<<*ci<<' ';

}
posted @ 2011-07-27 23:58  又是一年夏天  阅读(1680)  评论(0)    收藏  举报