C++ 中vector的基本用法
2013-08-06 21:58
417 查看
//在网上看了好久,自己总结了一下下,第一篇博客,呼呼,学到不少
基本概念
vector容器是一个模板类,可以存放任何类型的对象)。vector对象可以在运行时高效地添加元素,并且vector中元素是连续存储的。
1、定义和初始化
* vector< 类型名 > 标识符 (n) //定义容器大小为n
* vector< 类型名 > 标识符(最大容量,初始所有值);
eg: vector< int > ivec( 10, -1 ); 定义了 ivec 它包含十个int型的元素 每个元素都被初始化为-1
* vector<类型名> vector<typeName>v2(v1); 或v2=v1;或vector<typeName> v2(v1.begin(), v1.end());
//v2是v1的一个副本,若v1.size()>v2.size()则赋值后v2.size()被扩充为v1.size()。
* 拷贝数组中的元素:int a[ 6 ] = { -2, -1, 0, 1, 2, 1024 };
// 把 ia 的 6 个元素拷贝到 ivec 中 vector< int > ivec( a, a+6 );
// 拷贝 3 个元素 a[2], a[3], a[4] vector< int > ivec( &a[ 2 ], &a[ 5 ] ); //注意第二个指正要指到末尾元素的下一个元素
以下是事例:
常用方法
c.clear() 移除容器中所有数据。
c.empty() 判断容器是否为空。
c.erase(pos) 删除pos位置的数据
c.erase(beg,end) 删除[beg,end)区间的数据
c.front() 传回第一个数据。
c.insert(pos,elem) 在pos位置插入一个elem拷贝
c.pop_back() 删除最后一个数据。
c.push_back(elem) 在尾部加入一个数据。
c.resize(num) 重新设置该容器的大小
c.size() 返回容器中实际数据的个数。
c.begin() 返回指向容器第一个元素的迭代器
c.end() 返回指向容器最后一个元素的迭代器
使用迭代器
迭代器:迭代器是个所谓的智能指针,具有遍历复杂数据结构的能力,就看做是容器的专用指针吧,用容器时一般都要使用到这个,那种用数组索引的方法反而更加少用了,下面是一个简单的使用迭代器的示例:
以下是一些简单的程序:
定义一个二维数组
排序与逆向
定义二维动态数组
参考:http://blog.csdn.net/xiaohuizi2009/article/details/8067667
基本概念
vector容器是一个模板类,可以存放任何类型的对象)。vector对象可以在运行时高效地添加元素,并且vector中元素是连续存储的。
1、定义和初始化
* vector< 类型名 > 标识符 (n) //定义容器大小为n
* vector< 类型名 > 标识符(最大容量,初始所有值);
eg: vector< int > ivec( 10, -1 ); 定义了 ivec 它包含十个int型的元素 每个元素都被初始化为-1
* vector<类型名> vector<typeName>v2(v1); 或v2=v1;或vector<typeName> v2(v1.begin(), v1.end());
//v2是v1的一个副本,若v1.size()>v2.size()则赋值后v2.size()被扩充为v1.size()。
* 拷贝数组中的元素:int a[ 6 ] = { -2, -1, 0, 1, 2, 1024 };
// 把 ia 的 6 个元素拷贝到 ivec 中 vector< int > ivec( a, a+6 );
// 拷贝 3 个元素 a[2], a[3], a[4] vector< int > ivec( &a[ 2 ], &a[ 5 ] ); //注意第二个指正要指到末尾元素的下一个元素
以下是事例:
#include<iostream> #include <vector> using namespace std; int main(){ int a[ 6 ] = { -2, -1, 0, 1, 2, 1024 }; //拷贝数组中的元素 vector< int > vec1( a, a+6 ); cout<<vec1[0]<<' '<<vec1[1]<<' '<<vec1[2]<<' '<<vec1[3]<<endl; //拷贝数组中的元素 //两个指针标记了对象的值的范围,第二个指针总是指向要拷贝的末元素的下一位置 vector< int > vec( &a[ 2 ], &a[5] ); cout<<vec[0]<<' '<<vec[1]<<' '<<vec[2]<<' '<<vec[3]<<endl; //vec[3]输出错误,因为不存在 //把vec 拷贝到另一个容器中 vector< int > newone; newone = vec; cout<<newone[0]<<endl; return 0; }
常用方法
c.clear() 移除容器中所有数据。
c.empty() 判断容器是否为空。
c.erase(pos) 删除pos位置的数据
c.erase(beg,end) 删除[beg,end)区间的数据
c.front() 传回第一个数据。
c.insert(pos,elem) 在pos位置插入一个elem拷贝
c.pop_back() 删除最后一个数据。
c.push_back(elem) 在尾部加入一个数据。
c.resize(num) 重新设置该容器的大小
c.size() 返回容器中实际数据的个数。
c.begin() 返回指向容器第一个元素的迭代器
c.end() 返回指向容器最后一个元素的迭代器
使用迭代器
迭代器:迭代器是个所谓的智能指针,具有遍历复杂数据结构的能力,就看做是容器的专用指针吧,用容器时一般都要使用到这个,那种用数组索引的方法反而更加少用了,下面是一个简单的使用迭代器的示例:
//利用迭代器更改容器中的某一个值 #include<iostream> #include<vector> using namespace std; int main(){ vector<int> abc; abc.push_back(1); //push几个值进去 abc.push_back(5); abc.push_back(3); abc.push_back(4); // 迭代器遍历寻遍 for(vector<int>::iterator it = abc.begin();it!=abc.end();) { if(*it ==4) it = abc.erase(it); else ++it; } cout << "After remove 5:\n"; for(vector<int>::iterator i = abc.begin(); i < abc.end(); ++i) { cout << * i << " "; } cout << endl; return 0; }
以下是一些简单的程序:
定义一个二维数组
#include<iostream> #include<vector> using namespace std; int main(){ int i = 0,j = 0; //容器内部的容器 //Array 是10行,且都为0 vector< vector<int> > Array(10,vector<int>(0)); for(j = 0; j < 10; j++) { for (i = 0; i < 9; i++) { Array[j].push_back(i); } } //输出 for( j = 0; j < 10; j++ ) { for(i = 0; i<Array[j].size(); i++) { cout << Array[j][i] << " "; } cout<< endl; } }
排序与逆向
#include<iostream> #include<vector> #include<algorithm> #include <cstdlib> using namespace std; int main(){ vector<int> num; int element; while(cin>>element) num.push_back(element); sort(num.begin(),num.end()); //从大到小排序 reverse(num.begin(),num.end()); //逆向输出 for(int i = 0;i<num.size();i++) cout<<num[i]<<endl; system("pause"); return 0; }
定义二维动态数组
#include<iostream> #include<vector> using namespace std; int main(){ int i = 0,j = 0; vector<vector<int> > Array; vector<int> line; for(j = 0;j < 20;j++){ Array.push_back(line); //要对每一个vector初始化,初始化列。 for (i = 0; i < 9; i++ ) { Array[ j ].push_back( i ); } } for(j = 0;j < 10;j++ ) { for(i = 0; i<Array[j].size(); i++) { cout << Array[j][i] << " "; } cout<< endl; } }
参考:http://blog.csdn.net/xiaohuizi2009/article/details/8067667
相关文章推荐
- C++ vector的最最最基本用法
- c++ stl容器vector删除(erase),遍历等基本用法介绍及头文件
- c++ vector 基本用法 (2)
- vector在C++中的基本用法
- C++ vector 基本用法
- C++中的STL之vector的超详细基本用法
- [C++] Vector 中的基本用法(一)
- [C++] Vector的基本用法(二)
- c++ stl容器vector删除(erase),遍历等基本用法介绍及头文件
- C++中vector容器的基本用法总结
- c++ vector 基本用法 (1)
- C++中vector容器的基本用法总结
- c++中vector的用法详解
- 【C++STL】vector的count()和count_if()函数的用法
- C++ vector 用法
- C++中vector用法详解
- C++STL中vector容器的用法
- C++中vector的用法详解
- STL之Vector(一):Vector的基本用法
- c++ vector 用法