STL 常用容器

 1     //动态数组
 2     vector<int> theVector;
 3     theVector.push_back(1);
 4     theVector.push_back(2);
 5     theVector.push_back(3);
 6     theVector.pop_back();
 7     vector<int>::iterator itVector;
 8     cout << "vector" << endl;
 9     for(itVector = theVector.begin(); itVector != theVector.end(); itVector++)
10     {
11         cout << *itVector << endl;
12     }
13
14     //双向链表
15     list<int> theList;
16     theList.push_back(1);
17     theList.push_front(2);
18     list<int>::iterator itList;
19     cout << "list" << endl;
20     for(itList = theList.begin(); itList != theList.end(); itList++)
21     {
22         cout << *itList << endl;
23     }
24
25     //栈
26     stack<int> theStack;
27     theStack.push(1);
28     theStack.push(2);
29     theStack.push(3);
30     theStack.pop();
31     cout << "stack" << endl;
32     while(!theStack.empty())
33     {
34         cout << theStack.top() << endl;
35         theStack.pop();
36     }
37
38     //队列
39     queue<int> theQueue;
40     theQueue.push(1);
41     theQueue.push(2);
42     theQueue.push(3);
43     theQueue.pop();
44     cout << "queue" << endl;
45     while(!theQueue.empty())
46     {
47         cout << theQueue.front() << endl;
48         theQueue.pop();
49     }
50
51     //红黑树
52     map<int, string, less<int> > theMap;//模版最后位置加空格
53     theMap.insert(map<int, string, less<int> >::value_type(0,"Zero"));
54     theMap.insert(map<int, string, less<int> >::value_type(1,"One"));
55     theMap.insert(map<int, string, less<int> >::value_type(2,"Two"));
56     map<int, string, less<int> >::iterator itMap;
57     cout << "map" << endl;
58     for(itMap = theMap.begin(); itMap != theMap.end(); itMap++)
59     {
60         cout << (*itMap).second << endl;
61     }
时间: 2025-01-05 11:01:30

STL 常用容器的相关文章

基于内存查看STL常用容器内容

有时候在线上使用gdb调试程序core问题时,可能没有符号文件,拿到的仅是一个内存地址,如果这个指向的是一个STL对象,那么如何查看这个对象的内容呢? 只需要知道STL各个容器的数据结构实现,就可以查看其内容.本文描述了SGI STL实现中常用容器的数据结构,以及如何在gdb中查看其内容. string string,即basic_string bits/basic_string.h: mutable _Alloc_hider _M_dataplus; ... const _CharT* c_s

C++中STL常用容器的区别(转)

我们常用到的STL容器有vector.list.deque.map.multimap.set和multiset,它们究竟有何区别,各自的优缺点是什么,为了更好的扬长避短,提高程序性能,在使用之前需要我们了解清楚. verctor vector类似于C语言中的数组,它维护一段连续的内存空间,具有固定的起始地址,因而能非常方便地进行随机存取,即 [] 操作符,但因为它的内存区域是连续的,所以在它中间插入或删除某个元素,需要复制并移动现有的元素.此外,当被插入的内存空间不够时,需要重新申请一块足够大的

浅析常用STL中容器插入数据失败

昨天在上班的时候,碰到一个问题,关于 STL常用容器插入数据失败. 问题详细:在一个类构造函数填零后,那么map list 插入数据失败了,但是vector不会.测试代码如下: class Test { public: Test(){memset(this,0,sizeof(*this));} void InsertElement(){m_map.insert(std::make_pair(1,1)); } void InsetElement_vector(){ m_vector.push_ba

C++ STL vector容器学习

STL(Standard Template Library)标准模板库是C++最重要的组成部分,它提供了一组表示容器.迭代器.函数对象和算法的模板.其中容器是存储类型相同的数据的结构(如vector,list, deque, set, map等),算法完成特定任务,迭代器用来遍历容器对象,扮演容器和算法之间的胶合剂. 模板类vector 在计算中,矢量(vector)对应数组,它的数据安排以及操作方式,与array非常类似.在C++中,使用vector模板类时,需要头文件包含#include<v

c++ stl deque容器

c++中,Deque容器和vector相似,deque内部也采用动态数组来管理元素,支持随机存取..头文件<deque> 1.deque和vector的不同之处: 1)两端都可以较快速地按插元素和删除元素,而vector只能在尾端进行 2)在对内存有所限制的系统中,deque可以包含更多的元素,因为它不止一块内存.因此deque的max_size()可能更大 3)deque不支持对容量和内存的重分配时机的控制. 4)deque的内存区块不再被使用时,会被释放.deque的内存大小是可缩减的,由

STL之容器适配器queue的实现框架

说明:本文仅供学习交流,转载请标明出处,欢迎转载! 上篇文章STL之容器适配器stack的实现框架已经介绍了STL是如何借助基础容器实现一种常用的数据结构stack (栈),本文介绍下另外一种STL内部定义的另外一种STL容器适配器queue(队列). 对于接触过数据结构的人来说,队列并不陌生,它是一种FIFO(first in first out)的数据结构.与栈相比,队列的不同之处在于:(1)队列是一种先进先出的数据结构,而栈则是一种后进先出的数据结构:(2)队列支持首尾两端的访问操作,而栈

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 和

STL 常用算法

1.      STL 常用算法 l  for_each() 例1 //普通函数 voidFuncShowElemt2(int &t) { cout << t << " "; } vector<int> v1; v1.push_back(1); v1.push_back(3); v1.push_back(5); //通过回调函数  谁使用for_each 谁去填写回调函数的入口地址 for_each(v1.begin(), v1.end(),

C++ STL 常用遍历算法

C++ STL 常用遍历算法 STL的容器算法迭代器的设计理念 1) STL的容器通过类模板技术,实现数据类型和容器模型的分离 2) STL的迭代器技术实现了遍历容器的统一方法:也为STL的算法提供了统一性奠定了基 础 3) STL的算法,通过函数对象实现了自定义数据类型的算法运算:所以说:STL的算法也提 供了统一性.                核心思想:其实函数对象本质就是回调函数,回调函数的思想:就是任务的编写者和任务的调用者有效解耦合.函数指针做函数参数.4) 具体例子:transf