【转】vector向量知识

vector向量容器
做为数组的一个泛化推广的vector容器,不只能够数组同样的元素随机访问,还能够在容器的尾端插入新元素
vector是一个简单,高效的容器,在尾端插入和删除元素,算法时间复杂度为O(1)常数阶,其余元素的插入和删除为O(n)的线性阶,其中n为容器的元素个数,vector具备自动的内存管理功能,对于元素的插入和删除,可动态的调整所占用的内存空间。
vector技术原理
vector容器是一个线性结构,用3个指针存放向量的起始字节位置,当前最后一个向量元素的末尾字节和整个容器所占用的内存空间的末尾字节,3个指针变量分别为m_start,m_finish和m_end_of_storage
vector应用基础
建立vector对象
1 vector<int> v;
2 vector<double> v(10);  //建立一个具备10个元素的vector对象,每一个元素默认值为0.0
3 vector<double> v(10,9.3);   //建立一个具备10个元素的vector对象,每一个元素默认值为9.3
4 vector<char> v1(5,'k');
   vector<char> v2(v1);
初始化赋值
vector提供push_back函数,经常使用来进行vector容器的初始化,push_back函数在容器的尾端插入新元素
元素的遍历访问
vector的元素可采用数组或者迭代器的访问进行遍历访问.
 1 #include<vector>
 2 #include<iostream>
 3 int main()
 4 {
 5     using namespace std;
 6     vector<int> v;
 7     v.push_back(20);
 8     v.push_back(26);
 9     v.push_back(39);
10     for(int i=0;i<v.size();i++)
11     {
12         cout<<"v[" <<i <<"]=" <<v[i] <<endl;
13     }
14     return 0;
15 }
16 #include<vector>
17 #include<iostream>
18 int main()
19 {
20     using namespace std;
21     vector<int> v;
22     v.push_back(20);
23     v.push_back(26);
24     v.push_back(39);
25     vector<int>::iterator i,iend;
26     iend = v.end();
27     int j;
28     for(i = v.begin(),j = 0;i != iend;i++,j++)
29     {
30         cout<<"v[" <<j <<"]=" <<*i <<endl;
31     }
32     return 0;
33 }
vector提供了begin()和end()函数用于获取首元素的迭代器和最后一个元素的下一位置的迭代器
 
元素的插入
不一样于在vector容器尾部添加元素的push_back函数,insert函数可在函数的任意位置插入元素,因为插入时先将插入位置后的元素移位,以空出一个位置进行插入,所以,insert函数的执行较push_back函数稍为耗时.
 1 #include<vector>
 2 #include<iostream>
 3 int main
 4 {
 5     using namespace std;
 6     vector<int> v;
 7     v.push_back(6);
 8     v.push_back(7);
 9     v.push_back(8);
10     v.push_back(10);
11     v.insert(v.begin()+3,9);   //在元素10的前面插入9
12     v.insert(v.begin(),5);       //插入5为首元素
13     v.insert(v.end(),11);        //插入11为末元素
14     for(int i = 0;i < v.size();i++)
15     {
16         cout<<"v[" << i <<"]=" <<v[i] <<endl;
17     }
18     return 0;
19 }

在C++中有一些容器能够直接用的 如:queue stack priority_queue deque set map  
  等。  在这里我将说说vector;
   vector<class T> vec; 这是定义一个空的向量, 方法有:size , push_back,pop_back; erase,empty,begin,end  返回迭代器 等等, 还能够直接的下标操做 如:vec[i];还有就迭代器了  vector<class T>::iterartor it=vec.bengin();
  仍是看看例子吧:ios

 1 #include <iostream>
 2 #include <vector>
 3 using namespace std;
 4 int main()
 5 {
 6     vector<int> vec;
 7     int a;
 8     while(cin>>a)
 9     {
10         vector.push_back(a);//vector是自动分配空间的
11     }
12     for(int i=0;i<vec.size();i++)
13     cout<<vec[i]<<endl;
14     vec.pop_back();
15     for(int i=0;i<vec.size();i++)
16     cout<<vec[i]<<endl;
17     return 1; 
18 }

当输入是:1 2 3 4 5 时
输出是:
1
2
3
4
5算法

1
2
3
4数组

by: null函数

2013年7月15日20:53:39spa

转自:http://www.360doc.com/resaveArt.aspx?articleid=103447810&isreg=1指针

相关文章
相关标签/搜索