STL之vector的学习1

 

现在对STL的学习主要是看《C++ Primer》,这本书买回来大半年,虽然很多都基本看了,但是真得真得看得不够仔细。现在重新再看多几遍。

vector是一个类模板,不是数据类型。

 

以下是C++ Primer里面的代码和一些实例说明。

 

以后还会有vector的代码实现。
 1 #include<iostream>
 2  #include<vector>
 3  using namespace std;
 4  
 5  int main( )
 6  {
 7      vector<int> v1;           //v1为空
 8      vector<int> v2(v1);       //v2为v1的副本
 9      vector<int> v3(10, 99);   //v3包含10个99
10      vector<int> v4(10);       //v4含有初始化的元素的10个副本
11      /*v1和v4是有区别的,v1里面是空的,而v4里面是有东西的,因为是整型,里面的10个元素都为0*/
12      if(v1.empty())
13      cout << "v1为空的!" << endl;
14      if(v1.size() == 0)
15      cout << "v1为空的!" << endl;
16      for(int i = 0; i != 10; ++i)
17      cout << v3[i] << " ";
18      cout << endl;
19      /*判断vector是否为空的两种方法*/
20  
21      /*int n, i, m;
22      cin >> n;
23      for(i = 0; i != n; ++i)
24      {
25          cin >> m;
26          v1.push_back(m);
27      }
28      cout << v1.size() << endl;
29      for(vector<int>::size_type ix = 0; ix != v1.size(); ++ix)
30      {
31          cout << v1[ix] <<" ";
32      }
33      cout << endl;*/
34      /*将元素插入vector对象的后面
35      输入10个数字 10 9 8 7 6 5 4 3 2 1
36      输出为 10 9 8 7 6 5 4 3 2 1
37      尽量不要用int整型的数去历遍vector,就好像string那样。用vector<int>::size_type的类型。尽量严谨点吧
38      */
39      vector<int> v5;
40      /*for(vector<int>::size_type ix = 0; ix != 10; ++ix)
41      v5[ix] = ix;*/
42      /*注意vector的下标只能获取已存在的元素,v5是空的,所以是不能运行的注意空的vector只能通过v.push_back()来添加元素*/
43      /*for(vector<int>::size_type ix = 0; ix != 10; ++ix)
44      v4[ix] = ix;
45      for(vector<int>::size_type ix = 0; ix != 10; ++ix)
46      cout << v4[ix] << " ";
47      cout << endl;*/
48      vector<int> v6(10);
49      vector<int>::iterator iter;
50      for(iter = v6.begin(); iter != v6.end(); ++iter)
51      cin >> *iter;
52      for(iter = v6.begin(); iter != v6.end(); ++iter)
53      cout << *iter << " ";
54      cout << endl;
55      /*vector的迭代器类型:vector<int>::iterator,注意容器的begin和end函数,begin返回的迭代器指向第一个元素,。end返回的迭代器指向末端元素的下一个
56      这个要注意。迭代器能使用解引用操作符(迭代器相当于指针,不过比指针好),所以往vector里面输入元素有两种方法,一种是下标,当然那vector不能是空的
57      第二就是用迭代器。输出也是这样*/
58      vector<int>::const_iterator iter1;
59      for(iter1 = v6.begin(); iter1 != v6.end(); ++iter1)
60      cout << *iter1 << " ";
61      cout << endl;
62      /*for(iter1 = v6.begin(); iter1 != v6.end(); ++iter1)
63      *iter1 = 0;
64      */
65      /*const_iterator迭代器返回的为一个const值,所以不允许用const_iterator进行赋值。相当于指向const的指针,不能通过指针去修改它的值*/
66      vector<int> v7(10);
67      const vector<int>::iterator iter2 = v7.begin();
68      *iter2 = 0;
69      //++iter2; 这是一个const类型的迭代器,所以可以通过迭代器修改自身的值,但是不能改变迭代器指向的元素。相当于const指针。
70      //const vector<int>::const_iterator iter3 = v7.begin(); 这是一个const类型const_iterator迭代器,既不能通过迭代器修改自身的值,也不能改变迭代器指向的元素。
71      return 0;
72  }

 

 

posted @ 2012-09-11 13:11  alan_forever  阅读(192)  评论(0编辑  收藏  举报