《STL 中 vector deque list 的常见应用》
来源:互联网 发布:时时彩记录软件 编辑:程序博客网 时间:2024/05/17 14:28
//The operations available for all the basic sequence Containers.
//devcpp
#include <iostream>
#include <deque>
#include <list>
#include <vector>
using namespace std;
template <typename Container>
void print(Container & c,char * title="")
{
cout<<title<<':'<<endl;
if(c.empty())
{
cout<<"(empty)"<<endl;
return ;
}
typename Container::iterator it;
for(it=c.begin();it!=c.end();it++)
cout<<* it<<" ";
cout<<endl;
cout<<"size() "<<c.size()
<<" max_size() "<<c.max_size()
<<" front() "<<c.front()
<<" back() "<<c.back()
<<endl;
}
template <typename ContainerOfInt>
void basicOps(char * s)
{
cout<<"------- "<<s<<" -------"<<endl;
typedef ContainerOfInt Ci;
Ci c;
print(c,"c after default constructor");
Ci c2(10,1); //10 elements, value all 1
print(c2,"c2 after constructor(10,1)");
int ia[]={1,3,5,7,9};
const int IASZ=sizeof(ia)/sizeof(* ia);
//Initialize with begin & end iterators:
Ci c3(ia,ia+IASZ);
print(c3,"c3 after constructor(iter,iter)");
Ci c4(c2); //Copy-constructor
print(c4,"c4 after copy-constructor(c2)");
c=c2; //Assignment operator
print(c,"c after operator=c2");
c.assign(10,2); //10 elements, value all 2
print(c,"c after assign(10,2)");
//Assign with begin & end iterators:
c.assign(ia,ia+IASZ); ////VC6.0不支持assign
print(c,"c after assign(iter,iter)");
cout<<"c using reverse iterators:"<<endl;
typename Ci::reverse_iterator rit=c.rbegin();
while(rit!=c.rend())
cout<<* rit++<<" ";
cout<<endl;
c.resize(4);
print(c,"c after resize(4)");
c.push_back(47);
print(c,"c after push_back(47)");
c.pop_back();
print(c,"c after pop_back()");
typename Ci::iterator it=c.begin();
++it;++it;
c.insert(it,74);
print(c,"c after insert(it,74)");
it=c.begin();
++it;
c.insert(it,3,96);
print(c,"c after insert(it,3,96)");
it=c.begin();
++it;
c.insert(it,c3.begin(),c3.end());
print(c,"c after insert(it,c3.begin(),c3.end())");
it=c.begin();
++it;
c.erase(it);
print(c,"c after erase(it)");
typename Ci::iterator it2=it=c.begin();
++it;
++it2;++it2;++it2;++it2;++it2;
c.erase(it,it2);
print(c,"c after erase(it,it2)");
c.swap(c2);
print(c,"c after swap(c2)");
c.clear();
print(c,"c after clear()");
}
int main()
{
basicOps< vector<int> >("vector");
basicOps< deque<int> >("deque");
basicOps< list<int> >("list");
cin.get();
return 0;
} ///:~
- 《STL 中 vector deque list 的常见应用》
- STL中vector、deque、list的区别
- STL中vector、list、deque的区别
- STL中vector、list、deque的区别
- STL中vector、list、deque的区别
- STL中list/vector/deque
- STL中: string、vector、list、deque、set、map 的区别
- STL中: string、vector、list、deque、set、map 的区别
- stl中vector,list,deque的使用准则
- STL中: string、vector、list、deque、set、map 的区别
- STL中: string、vector、list、deque、set、map 的区别
- STL中vector、list、deque和map的区别
- stl中vector,list,deque的使用准则
- STL中vector、list、deque和map的区别
- STL中string、vector、list、deque、set、map 的区别
- STL中vector、list、deque和map的区别
- STL中vector、list、deque和map的区别
- STL中vector、list、deque和map的区别
- 前两天做了个java的小东西,作随想一篇
- Ubuntu下安装Vmware Tools
- Python 持久性管理
- 《关于STL中的list,vector,deque队列容器(written by Flower)》
- 信息摘要算法实现之MD5算法
- 《STL 中 vector deque list 的常见应用》
- 数据库系统概论学习笔记之一:数据库系统概述
- C++模板
- [转载]小窗终曲说策划
- 指向指针的指针的初始化
- 使用动态优先权的进程调度算法的模拟
- C++ string类使用、定义
- 备忘-使用spring进行远程访问
- 公司人事管理系统