容器是包含其他对象的对象。C++中提供了一系列的容器类主要包括顺序容器和关联容器。顺序容器包括vector,list,deque。关联容器包括:映射多重映射,集合和多重集合。
顺序容器可以提供对容器元素的快速访问。关联容器便于插入语删除。
/*string的构造函数
*/
/*
#include<iostream>
using namespace std;
#include<string>
int main()
{
string a(4,'c');
string b("value");
string c(b);
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
//判断字符串是否为空
if(!c.empty())
{
cout<<"c is not empty"<<endl;
// string::size_type=c.size();
// cout<<string::size_type<<endl;
}
//按照字符下标输出字符串
cout<<c[4]<<endl;
//字符串重载+号操作符
c+=c;
//字符串重载=操作符
a=c;
if(a==c)
{
cout<<"a is equal to c"<<endl;
}
cout<<a<<endl;
cout<<c<<endl;
string d;
//输出带空格的字符串的方法
getline(cin,d);
cout<<d<<endl;
//输出带空格后面的字符串的方法
string e;
while(cin>>e)
{
cout<<e;
}
return 0;
}
*/
/*字符串的赋值
*/
/*
#include<iostream>
using namespace std;
#include<string>
int main()
{
string s1="asdf";
string s2="sefwe";
string s3=s1+s2;
string s4="asdfe"+s3;
cout<<s4<<endl;
cout<<s3<<endl;
string::size_type si;
for(si=0;si<s4.size();si++)
cout<<s4[si]<<endl;
if(isalnum(s4[4]))
{
cout<<"yes"<<endl;
}
if(isdigit(s4[4]))
{
cout<<"is digital"<<endl;
}
if(isupper(s4[4]))
{
cout<<"is upper alpher"<<endl;
}
for(si=0;si!=s4.size();si++)
{
s4[si]=toupper(s4[si]);
}
cout<<s4<<endl;
return 0;
}
*/
/*容器操作
*/
/*
#include<iostream>
using namespace std;
#include<vector>
#include<string>
int main()
{
vector<int>a(10,12);
vector<int>::iterator it;
for(it=a.begin();it!=a.end();it++)
{
cout<<*it<<endl;
}
vector<string> b(3,"w3r");
//const_iterator类型只能读取不能赋值
vector<string>::const_iterator is;
for(is=b.begin();is!=b.end();is++)
{
// *is="haha";
cout<<*is<<endl;
}
vector<int>c(a);
for(it=c.begin();it!=c.end();it++)
{
cout<<*it<<endl;
}
if(b.empty())
{
cout<<"b is empty"<<endl;
}
else
cout<<"b is not empty"<<endl;
cout<<b.size()<<endl;
b.push_back("awerfwfeff");
cout<<b.back()<<endl;
cout<<b.front()<<endl;
cout<<b[2]<<endl;
return 0;
}
*/
/*
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<list>
#include<deque>
using namespace std;
int main()
{
string a("aweffwergergeg");
string q("woshishui");
vector<int> b(12,4);
vector<string>c(2,a);
vector<string>d(c.begin(),c.begin()+c.size()/2);
vector<string>::const_iterator it;
b.reserve(50);
cout<<b.capacity()<<endl;
cout<<c.capacity()<<endl;
for(it=d.begin();it!=d.end();it++)
{
cout<<*it<<endl;
}
vector<string>::iterator mid=c.begin()+c.size()/2;
deque<string>e(3,q);
deque<string>::const_iterator dt;
for(dt=e.begin();dt!=e.end();dt++)
{
cout<<*dt<<endl;
}
deque<string>::reverse_iterator at=e.rend();
cout<<*at<<endl;
cout<<e.front()<<endl;
deque<string>::size_type si=3;
deque<string>f(3,a);
for(dt=f.begin();dt!=f.end();dt++)
{
cout<<*dt<<endl;
}
deque< deque<string> >line(2,f);
deque< deque<string> >::iterator is;
for(is=line.begin();is!=line.end();is++)
{
for(dt=is->begin();dt!=is->end();dt++)
cout<<*dt<<endl;
}
f.insert(f.end(),d.begin(),d.end());
for(dt=f.begin();dt!=f.end();dt++)
{
cout<<*dt<<endl;
}
f.insert(f.end(),3,"hlou");
deque<string>::iterator ios=find(f.begin(),f.end(),"hlou");
if(ios!=f.end())
{
f.erase(ios);
}
for(dt=f.begin();dt!=f.end();dt++)
{
cout<<*dt<<endl;
}
f.swap(e);
for(dt=f.begin();dt!=f.end();dt++)
{
cout<<*dt<<endl;
}
f.assign(e.begin(),(e.begin()+e.size()/3));
for(dt=f.begin();dt!=f.end();dt++)
{
cout<<*dt<<endl;
}
return 0;
}
*/
/*
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s("aaaaaaaaaaa");
string s1("bbbb");
string s2("c123c");
string s3=s1+s2;
cout<<s3<<endl;
s3.append("dddd");
s3.replace(1,4,"eeeee");
cout<<s3<<endl;
cout<<s3<<endl;
int num=s3.find("d");
cout<<num<<endl;
string::size_type sz=0;
string number("123567890");
sz=s3.find_first_of(number);
cout<<sz<<endl;
sz=s3.rfind("e");
cout<<sz<<endl;
string r1("abcccc");
string r2("accccc");
cout<<r1.compare(r2)<<endl;
cout<<r1.compare(2,4,r2,2,4)<<endl;
return 0;
}
*/
/*
容器适配器之栈:提供五种操作分别是pop,push,empty,size,top
*/
/*
#include<iostream>
#include<stack>
using namespace std;
int main()
{
stack<int> num;
stack<int>::value_type value=10;
int i=1;
while(num.size()!=value)
{
num.push(i);
i++;
}
cout<<num.top()<<endl;
while(num.top()!=4)
{
num.pop();
}
cout<<num.top()<<endl;
cout<<num.size()<<endl;
if(num.empty())
{
cout<<"this stack is empty!"<<endl;
}
else
cout<<"this stack is not empty!"<<endl;
stack<int>b(num);
cout<<b.top()<<endl;
while(!b.empty())
{
cout<<b.top()<<endl;
b.pop();
}
b.push(234);
if(b.empty())
{
cout<<"this stack is empty!"<<endl;
}
else
cout<<"this stack is not empty!"<<endl;
return 0;
}
*/
/*
容器适配器之队列:queue
*/
/*
#include<iostream>
#include<queue>
using namespace std;
int main()
{
queue<int> num;
queue<int>::value_type value=10;
int i=1;
while(num.size()!=value)
{
num.push(i++);
}
cout<<num.front()<<endl;
cout<<num.back()<<endl;
num.pop();
cout<<num.front()<<endl;
cout<<num.size()<<endl;
return 0;
}
*/
/*
容器适配器之priority_queue
*/
#include<iostream>
#include<queue>
using namespace std;
int main()
{
priority_queue<int>num;
priority_queue<int>::value_type value=100;
int i=100;
while(num.size()!=value)
{
num.push((i++)%57);
}
cout<<num.top()<<endl;
priority_queue<int>nab(num);
while(!nab.empty())
{
cout<<nab.top()<<endl;
nab.pop();
}
return 0;
}
以上代码为顺序容器以及容器适配器的各个成员函数的使用方法。