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 }

容器对象有一个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 }

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

时间: 2024-08-06 07:59:12

C++ 容器对象vector和list 的使用的相关文章

stl容器区别: vector list deque set map及底层实现

在STL中基本容器有: vector.list.deque.set.map set 和map都是无序的保存元素,只能通过它提供的接口对里面的元素进行访问 set :集合, 用来判断某一个元素是不是在一个组里面,使用的比较少 map :映射,相当于字典 ,把一个值映射成另一个值,如果想创建字典的话使用它好了 底层采用的是树型结构,多数使用平衡二叉树实现 ,查找某一值是常数时间,遍历起来效果也不错, 只是每次插入值的时候,会重新构成底层的平衡二叉树,效率有一定影响. vector.list.dequ

切勿创建包含auto_ptr的容器对象

 当你拷贝一个auto_ptr时,它所指向的对象的所有权被移交到拷入的auto_ptr上,而它自身被置为NULL.我的理解是:拷贝一个auto_ptr意味着改变它的值.例如: auto_ptr<int> pint1(new int);//pint1指向一个int auto_ptr<int> pint2(pint1);//pint2指向pint1的int:pint1被置为NULL pint1 = pint2;//现在pint1又指向int了:pint2被置为NULL 在看一种实现

配置Spring的用于初始化容器对象的监听器

<!-- 配置Spring的用于初始化容器对象的监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> &l

STL顺序容器【vector】【deque】【list】

我们都知道,stl容器中将容器分为两类,顺序容器和关联容器. 顺序容器有三种即vector,deque,以及list 一:顺序容器的常用操作 1:首先顺序容器的迭代器 定义:T<C>::iterator iter; /*支持所有顺序容器*/ *iter返回迭代器的引用 iter->mem 对iter解引用,等效于(*iter).men ++iter|iter++自加 --iter|iter--自减 iter1==iter2  |  iter1!=iter2比较 /*只支持vector 和

j2ee容器对象加载顺序及优先级概述

一.概述 web容器中,主要以三个容器对象的生命周期为导向,分别为:Listener/Filter/Servlet.总体概图如下: 同时,还存在着这样一种配置节点:context-param,它用于向 ServletContext 提供键值对,即应用程序上下文信息.我们的 listener, filter 等在初始化时会用到这些上下文中的信息,加载顺序如下图: ①.加载Servlet时,分两种情况:启动时加载.懒加载. 启动时加载 只需在配置Servlet的时候加上节点<load-on-star

如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉

如果容器中包含了通过new操作创建的指针,切记在容器对象析构前将指针delete掉 在STL中容器是智能的,可以在容器销毁时自动调用容器里对象的析构函数来销毁容器存储的对象. STL的容器虽然比较智能,但是没有智能到可以自动销毁new出来的指针对象. 所以在使用STL中的容器时,如果保存的是mew出来的对象的指针.如果在容器销毁之前没有把new出来的对象释放,会造成内存泄露. 解决方法版本一: 这种手工释放容器里new的对象不太可靠,菲异常安全的.如果在delete的时候爆出异常,那么还是会引起

获取spring容器对象方法和原因

为什么要获取Spring容器对象:拿到spring容器对象后,你就可以用spring管理的bean了,拿到bean,自然可以使用bean的方法,场景:比如jsp页面.通过注解是无法注入bean的,在开发中,总是能碰到用注解注入不了Spring容器里面bean对象的问题.为了解决这个问题,我们需要一个工具类来直接获取Spring容器中的bean.spring提供了一个工具类WebApplicationContextUtils,就可以拿到了 样例:比如我们项目的代码,在jsp中: 原文地址:http

STL容器之一vector

STL中最简单也是最有用的容器之一是vector<T>类模板,称为向量容器,是序列类型容器中的一种. 容器容量可以选择性修改.(1)声明:vector<type>  v;    //容量为0构造v对象,指定元素类型为typevector<type>  v(n);    //容量为n构造v对象,指定元素类型为typevector<type>  v(n, initValue);    //容量为n构造v对象,指定元素类型为type,且所有元素被初始化为initV

STL 容器(vector 和 list )

1.这个容器的知识点比较杂 1 #define _CRT_SECURE_NO_WARNINGS 2 #include <iostream> 3 #include <vector> 4 #include <list> 5 #include <algorithm> 6 #include <numeric> 7 #include <functional> 8 9 using namespace std; 10 11 /* 12 int ia