标签:判断 main int tar prim com 操作 数组 copy
在<<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 }
容器对象有一个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 }
这里需要留意的是,如果容器对象为空,则必须要先进行判断,否则操作未定义。如上代码是不能运行的。
标签:判断 main int tar prim com 操作 数组 copy
原文地址:http://www.cnblogs.com/lucy-lizhi/p/6517055.html