C++STL学习(2)容器deque

注:博客内容均来自于对《C++标准库》侯捷,华中科技大学出版社一书的笔记。转载请注明出

所有例程在Red Hat Linux 3.2.2-5版本上编译运行,g++的版本是 g++ (GCC) 3.2.2 20030222。

1、Deques

     容器deque和vector非常相似。也是采用动态数组来管理元素,提供随机存取。并且有着和vector一样的接口。但是deque的动态数组头尾都是开放的,因此能在头尾两端进行快速的添加和删除操作

C++STL学习(2)容器deque_第1张图片

deque通常实现为一组独立区块,第一区块向一方向扩展,最后一区块向另一方向扩展。

C++STL学习(2)容器deque_第2张图片

2、deque与vector的不同

C++STL学习(2)容器deque_第3张图片

3、deque的操作函数

C++STL学习(2)容器deque_第4张图片

C++STL学习(2)容器deque_第5张图片

C++STL学习(2)容器deque_第6张图片

4.dequ例子

#include <iostream>
#include <deque>
#include <string>
#include <algorithm>
#include <iterator>
using namespace std;

int main(int argc, char *argv[])
{
	deque<string> col1;
	//向容器中添加3个字串
	col1.assign(3, string("string"));
	//在容器尾部添加字串
	col1.push_back("last string");
	//在容器头部添加字串
	col1.push_front("first string");

	//容器内容全部复制到输出流,打印容器内容
	copy(col1.begin(), col1.end(),
		ostream_iterator<string>(cout," "));
	cout<<endl;
	
	//删除容器头部元素
	col1.pop_front();
	//删除容器尾部元素
	col.pop_back();

	//从容器的第二个元素开始,每个元素前面追加字符"another"
	for(int i = 1; i < col1.size(); ++i)
	{
		col1[i] = "another " + col1[i];
	}

	//容器内元素个数改为4个,不足的以"resized string"填充
	col1.resize(4,"resized string");
	
	//容器内容全部复制到输出流,打印容器内容
	copy(col1.begin(), col1.end(),
		ostream_iterator<string>(cout," "));
	cout<<endl;
	return 0; 
}


运行结果:

C++STL学习(2)容器deque_第7张图片



你可能感兴趣的:(C++STL学习(2)容器deque)