• 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;
    }

    执行结果例如以下:



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

  • 相关阅读:
    sql datareader多线程访问时出错
    程序中判断path中是否有某个文件
    asp中接收到querystring是utf8编码的处理方式
    SuppressIldasmAttribute 属性的使用和去掉
    C#中检测access mdb 版本
    发布一款数据库查询工具(更新,支持db2 950 c) 2008429
    多数据库查询工具(更新,支持text file define) 2008527
    ajax loading 总结
    通过网页发送QQ消息
    老板是在Challenge吗?
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5242986.html
Copyright © 2020-2023  润新知