码迷,mamicode.com
首页 > 编程语言 > 详细

C++入门学习——标准模板库之vector

时间:2015-06-25 17:30:16      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:c++   入门教程   标准模板库   stl   vector   

vector(向量容器),是 C++ 中十分有用一个容器。vector 之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector 是一个能够存放任意类型(类型可以是int, double, string, 还可以是类)的动态数组,能够增加和压缩数据。


使用 vector 之前,必须包含相应的头文件,vector 属于 std 命名域的,因此需要通过命名限定:

#include <vector>
using std::vector; //using namespace std;


vector 对象的定义和初始化

技术分享

vector<int> a; //创建一个int类型的空的vector对象,没有任何元素
vector<int> b(a); //b 是 a 的副本
vector<string> str(10, "mike"); //10个str,每个的内容都是"mike"
vector<int> c(10); //创建10个int类型vector对象,相当于c[10],每个元素的值默认为0


vector 对象常用操作

技术分享


使用示例如下:

#include <iostream>
#include <vector>

using std::vector;
using std::cout;
using std::endl;
//using namespace std;

int main( )
{
	vector<int> a(10); //创建10个int类型vector对象,相当于c[10],每个元素的值为0
	
	//判断 a 是否为空
	if( true == a.empty() ){ 
		cout << "it is empty\n";
	}else if(false == a.empty() ){ //结果不为空
		cout << "it is not empty\n";
	}
	
	//返回 a 中元素的个数。
	cout << "size = " << a.size() << endl; // 结果为10
	
	// 在 a 的末尾增加一个值为 5 的元素。
	// 本来有10个元素,再添加一个,变为11个
	a.push_back(5);
	
	//下标操作元素,有11个元素,0~10
	//打印最后一个元素
	cout << a[a.size() -1] << endl; //结果为 5
	
	// 下标法,把所有元素的值打印出来
	// vector<int>::size_type 可以当做 int 使用
	for(vector<int>::size_type i = 0; i != a.size(); i++){
		cout << a[i] << ", ";
	}
	cout << endl;
	
	cout << "size before pop_back = " << a.size() << endl;
	a.pop_back(); //删除容器最后位置处的元素
	cout << "size after pop_back = " << a.size() << endl;
	
	// 下标法,给所有元素赋值
	for(vector<int>::size_type i = 0; i != a.size(); i++){
		a[i] = 5;
	}
	
	cout << "it is a:\n";
	// 把 a 所有元素的值打印出来
	for(vector<int>::size_type i = 0; i != a.size(); i++){
		cout << a.at(i) << ", ";
	}
	cout << endl;
	
	vector<int> b = a; //b是a的复制品
	
	cout << "it is b:\n";
	// 把 b 所有元素的值打印出来
	for(vector<int>::size_type i = 0; i != a.size(); i++){
		cout << b[i] << ", ";
	}
	cout << endl;
	
	a.clear(); //清除所有元素
	cout << "size after clear = " << a.size() << endl;
	
	return 0;
}


运行结果如下:

技术分享


迭代器操作 vector 对象

除了使用下标来访问 vector 对象的元素外,标准库还提供了另一种访问元素的方法:使用迭代器(iterator) 。迭代器是一种检查容器内元素并遍历元素的数据类型。实际上,vector 对象相当于数组,而迭代器就相当于指针


每种容器类型都定义了自己的迭代器类型,如 vector:

vector<int>::iterator iter;


技术分享


使用示例如下:

#include <iostream>
#include <vector>

using std::vector;
using std::cout;
using std::endl;
//using namespace std;

int main( )
{
	vector<int> v(10, 5); //有10个元素,每个元素的值都是5
	
	//通过迭代器把所有元素的值打印出来
	vector<int>::iterator it;
	for( it=v.begin(); it!=v.end(); it++){
		cout<< *it << ", ";
	}
	cout << endl;
	
	//通过迭代器给所有元素赋值为1
	for( it=v.begin(); it!=v.end(); it++){
		*it = 1;
	}
	
	cout << endl;
	//通过迭代器把所有元素的值打印出来
	for( it=v.begin(); it!=v.end(); it++){
		cout<< *it << ", ";
	}
	cout << endl;
	
	it = v.begin(); //返回指向容器最开始位置元素的指针(迭代器)
	//删除指针it+1指向位置的元素,返回指向下一个元素位置的指针(迭代器)
	v.erase(it+1); 
	
	cout << endl << "after erase:\n";
	//通过迭代器把所有元素的值打印出来
	for( it=v.begin(); it!=v.end(); it++){
		cout<< *it << ", ";
	}
	cout << endl;
	
	it = v.begin(); 
	//在位置it后插入3个5
	v.insert(it, 3, 5);
	
	cout << endl << "after insert:\n";
	//通过迭代器把所有元素的值打印出来
	for( it=v.begin(); it!=v.end(); it++){
		cout<< *it << ", ";
	}
	cout << endl;
	
	return 0;
}

运行结果如下:

技术分享


本教程示例代码下载请点此处。

C++入门学习——标准模板库之vector

标签:c++   入门教程   标准模板库   stl   vector   

原文地址:http://blog.csdn.net/tennysonsky/article/details/46627413

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!