您的位置:首页 > 编程语言

STL系列之二_vector(其他用法代码演示)

2015-04-28 20:08 375 查看
vector其他的一些问题:

1.vector<int> vectorA; //声明空的容器, 不应该写成vector<int> vectorA();

2.成员函数:

front() 首元素 //可作为左值或者右值

back() 尾元素 //可作为左值或者右值

at() 某一位置元素 //可作为左值或者右值

resize() 重新定义vector的大小

copy() //后卫利用copy实现两个容器向一个容器的复制

for_each 对遍历的数据进行处理

sort 对遍历的数据进行排序

下面是代码和运行结果:

// vector.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <vector>
#include <algorithm>   //for_each
using namespace std;

void add(int& lhs)  //用于for_each
{
lhs++;
}

bool comp(const int&a,const int &b) //用于sort
{
return a>b;
}

int _tmain(int argc, _TCHAR* argv[])
{
vector<int> vecIntA; //建立空的容器,注意后面不能带括号。
vecIntA.push_back(1);
vecIntA.push_back(2);
vecIntA.push_back(3);
for(vector<int>::iterator iA=vecIntA.begin(); iA!=vecIntA.end();iA++)
{
cout<<*iA<<" ";
}
cout<<endl;

//front,at,back作为右值
int Front = vecIntA.front();
int At=vecIntA.at(1);
int Back = vecIntA.back();
cout<<Front<<" "<<At<<" "<<Back<<endl;

//front,at,back作为左值
vecIntA.front() = 4;
vecIntA.at(1) = 5;
vecIntA.back() = 6;
for(vector<int>::iterator iA2=vecIntA.begin(); iA2!=vecIntA.end();iA2++)
{
cout<<*iA2<<" ";
}
cout << endl;

cout<<"当前容器大小为:"<<vecIntA.capacity()<<endl;
//重新定义vector的大小
vecIntA.resize(4);
cout<<"当前容器大小为:"<<vecIntA.capacity()<<endl;
//除了at外,使用数组的形式访问
vecIntA[3] = 7;
for(vector<int>::iterator iA3=vecIntA.begin(); iA3!=vecIntA.end();iA3++)
{
cout<<*iA3<<" ";
}
cout << endl;

//下面将vecIntA和vecIntB的内容复制到C中
vector<int> vecIntB(4,8);
vector<int> vecIntC;
//重新定义大小
vecIntC.resize(vecIntA.size()+vecIntB.size());
//先将A拷贝到C中,并更新迭代器的值。这是的iClast指向iC末尾元素的下一个位置。
vector<int>::iterator iClast = copy(vecIntA.begin(),vecIntA.end(),vecIntC.begin());
//利用上次的迭代器,将B拷贝到C
copy(vecIntB.begin(),vecIntB.end(),iClast);
for(vector<int>::iterator iC=vecIntC.begin(); iC!=vecIntC.end();iC++)
{
cout<<*iC<<" ";
}
cout << endl;

//for_each的用法
for_each(vecIntC.begin(),vecIntC.end(),add);//for_each的第三个参数写函数名,即add
for(vector<int>::iterator iC2=vecIntC.begin(); iC2!=vecIntC.end();iC2++)
{
cout<<*iC2<<" ";
}
cout << endl;

//sort默认从小到大进行排序,现在从大到小排序
sort(vecIntC.begin(),vecIntC.end(),comp); //sort的第三个参数写函数名
for(vector<int>::iterator iC3=vecIntC.begin(); iC3!=vecIntC.end();iC3++)
{
cout<<*iC3<<" ";
}
cout << endl;

//六种操作符 < <= > >= == !=
return 0;
}


Results:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: