stl库之vector

vector构造函数

向量(vector容器类)vector是一种动态数组,是基本数组的类模板。vector 类中定义了4中种构造函数:

 1、默认构造函数,构造一个初始长度为0的空向量,如:vector<int> v1; 

 2、带有单个整形参数的构造函数,此参数描述了向量的初始大小。这个构造函数还有一个可选的参数,这是一个类型为T的实例,描述了各个向量种各成员的初始值;如:vector<int> v2(n,0);定义长为n的vector,每个vector的元素值是0。

 3、复制构造函数,构造一个新的向量,作为已存在的向量的完全复制,如:vector<int> v3(v2);

 4、带两个常量参数的构造函数,产生初始值为一个区间的向量。区间由一个半开区间[first,last) 来指定。如:vector<int> v4(first,last)

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

int ar[10] = {  12, 45, 100, 23, 22, 35, 63, 11, 2, 55  };
char* str = "Hello World";

int _tmain(int argc, _TCHAR* argv[])  
{
	vector <int> vec0;
	vector <int> vec1(ar, ar+10);   //first=ar,last=ar+10,不包括ar+10
	vector <char> vec2(str,str+strlen(str)); //first=str,last= str+strlen(str), 
	vector <int> vec3(10, 0);  
	vector <char> vec4(vec2);  

	cout<<"vec0:"<<endl;  
	for(vector<int>::const_iterator p=vec0.begin();p!=vec0.end(); ++p)
		cout<<*p<<" ";

	cout<<endl<<"vec1:"<<endl;
	for(vector<int>::const_iterator p=vec1.begin();p!=vec1.end(); ++p)
		cout<<*p<<" ";

	cout<<endl<<"vec2:"<<endl;
	for(vector< char >::const_iterator p=vec2.begin();p!=vec2.end(); ++p)
		cout<<*p;

	cout<<endl<<"vec3:"<<endl;  
	for(vector<int>::const_iterator p=vec3.begin();p!=vec3.end(); ++p)
		cout<<*p<<" ";

	cout<<endl<<"vec4:"<<endl;  
	for(vector< char >::const_iterator p=vec4.begin();p!=vec4.end(); ++p)
		cout<<*p;

	cout<<endl;

	getchar();
	return 0;
}     

运行结果:

 

 

 vector成员函数

为了帮助理解向量的概念,这里写了一个小例子,其中用到了vector的成员函数:begin(),end(),push_back(),assign(),front(),back(),erase(),empty(),at(),size()。

#include "stdafx.h"
#include <vector>
#include <string>
#include <iostream>
using namespace std;

int ar[20] = {  
	12, 45, 100, 23, 22,
	35, 63, 11,  2,  55,
	3,  12, 66, 88,  70, 
	33, 33, 24, 75,  16 };

void showVector(string infos,vector <int> vec1);
void showVector(string infos,vector <int> vec1){
	infos=infos+"vec1:";
	cout<<endl<<infos<<endl;  
    for(vector<int>::const_iterator p=vec1.begin();p!=vec1.end(); ++p)  
        cout<<*p<<" "; 
}

int _tmain(int argc, _TCHAR* argv[])  
{
	vector <int> vec1(ar, ar+20);   
	showVector("原vector  ",vec1);

    //测试添加和插入成员函数,vector不支持从前插入
    vec1.push_back(2);//从后面添加一个成员
	showVector("push_back(2)  ",vec1);

	//测试移出和删除
    vec1.pop_back();//将最后一个成员移出vec1
	showVector("pop_back()  ",vec1);

    vec1.insert(vec1.begin()+1,5);//在vec1第一个的位置上插入成员5
	showVector("insert(vec1.begin()+1,5)  ",vec1);

	//测试引用类函数
    cout<<endl<<"vec1.front()="<<vec1.front()<<endl;//vec1第零个成员
    cout<<"vec1.back()="<<vec1.back()<<endl;//vec1的最后一个成员
    cout<<"vec1.at(4)="<<vec1.at(4)<<endl;//vec1的第五个成员
    cout<<"vec1[4]="<<vec1[4];

	vec1.erase(vec1.begin()+1,vec1.end()-2);//删除成员
	showVector("erase(vec1.begin()+1,vec1.end()-2);  ",vec1);
	cout<<endl<<"vec1.size(): "<<vec1.size();//打印成员个数


    //从vec1第一的位置开始插入vec3的所有成员
    //vec1.insert(vec1.begin()+1,vec3.begin(),vec3.end());

    //测试赋值成员函数
    vec1.assign(8,1);   // 重新给vec2赋值,8个成员的初始值都为1
	showVector("assign(8,1)  ",vec1);
   
	

    //显示序列的状态信息
    cout<<endl<<"vec1.size(): "<<vec1.size()<<endl;//打印成员个数
    cout<<"vec1.empty(): "<<vec1.empty();//是否为空
	vec1.erase(vec1.begin(),vec1.end());
	showVector("erase(vec1.begin(),vec1.end())  ",vec1);
	cout<<endl<<"vec1.size(): "<<vec1.size()<<endl;//打印成员个数
	cout<<"vec1.empty(): "<<vec1.empty();//是否为空
	getchar();
	return 0;
}


运行结果:

 


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值