首页 > 代码库 > C++ 容器对象vector和list 的使用

C++ 容器对象vector和list 的使用

在<<c++ primer>>第四版Exercise Section 9.3.4 的Exercise 9.20 是这样的一道题目:编写程序判断一个vector<int> 容器包含的元素是否与list<int> 容器完全相同。测试代码如下:

技术分享
 1 #include "stdafx.h"
 2 #include <iostream>
 3 #include <string>
 4 #include <list>
 5 #include <deque>
 6 #include <vector>
 7 
 8 
 9 using namespace std;
10 
11 int main()
12 {
13     vector<int> vect;
14     list<int> li;
15     int vect_copy[] = {1,2,3,2,1,2,6};
16     int li_copy[] = {2,4,6,54,7,0,2};
17     vect.insert(vect.begin(),vect_copy, vect_copy+7);
18     li.insert(li.begin(),li_copy,li_copy+7);
19 
20     if (vect.size() != li.size())
21     {
22         cout << "it is different." << endl;
23         return 0;
24     }
25 
26     for (vector<int>::iterator begin = vect.begin(); begin != vect.end(); ++begin)
27     {
28         bool flag = false;
29         for (list<int>::iterator begin_li = li.begin(); begin_li != li.end(); ++begin_li)
30         {
31             if (*begin == *begin_li)
32             {
33                 flag = true;
34                 continue;
35             }
36         }
37         if (flag)
38         {
39 
40         }
41         else
42         {
43             cout << *begin << " in vect is not in the list " << endl;
44         }
45     }
46     system("PAUSE");
47     return 0;
48 }
View Code

 

 容器对象有一个Insert成员函数,是用于在容器中插入元素使用,第一个参数是插入的位置,是个迭代器,后面两个参数是需要插入的元素迭代器开始和结尾。因为数组名是一个指针,因此这里也直接传入了数组名。

另外,这里有两个循环,分别遍历vector和list.

 

获取元素操作如下:

技术分享
 1 #include "stdafx.h"
 2 #include <vector>
 3 #include <iostream>
 4 
 5 
 6 using namespace std;
 7 
 8 
 9 int main()
10 {
11     vector<int> vect;
12     int arry[] = {1,2,3,21,34,90};
13     vector<int> vect2;
14     vect.insert(vect.begin(),arry,arry+6);
15     cout << vect[0] << endl;
16     cout << vect.front() << endl;
17     cout << *vect.begin() << endl;
18     cout << vect2[0] << endl;
19     system("PAUSE");
20     return 0;
21 }
View Code

这里需要留意的是,如果容器对象为空,则必须要先进行判断,否则操作未定义。如上代码是不能运行的。

 

C++ 容器对象vector和list 的使用