zoukankan      html  css  js  c++  java
  • C++入门学习——标准模板库之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
    ";
    	}else if(false == a.empty() ){ //结果不为空
    		cout << "it is not empty
    ";
    	}
    	
    	//返回 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:
    ";
    	// 把 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:
    ";
    	// 把 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:
    ";
    	//通过迭代器把全部元素的值打印出来
    	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:
    ";
    	//通过迭代器把全部元素的值打印出来
    	for( it=v.begin(); it!=v.end(); it++){
    		cout<< *it << ", ";
    	}
    	cout << endl;
    	
    	return 0;
    }

    执行结果例如以下:



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

  • 相关阅读:
    start tag, end tag issues in IE7, particularly in xslt transformation
    用SandCastle为注释生成chm文档
    Firebug
    架构的重点
    Linux Shell常用技巧(十) 管道组合
    Linux JDK升级
    Linux Shell常用技巧(十二) Shell编程
    Packet Tracer 5.0实验(一) 交换机的基本配置与管理
    Linux Shell常用技巧(六) sort uniq tar split
    Linux Shell常用技巧(二) grep
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5242986.html
Copyright © 2011-2022 走看看