STL中几种容器(二维)的初始大小问题
平时基本都用C,用到C++也是基本的cin,cout,调调sort什么的,今天自己练练STL写几个二维容器,也只是基本输入输出,遇到一些小问题。
//vector ,list ,deque 属于顺序容器,
//长度的问题不会对功能构成影响,所以可以在定义的时候
//对其进行初始化,即a(MAX),如下
vector<vector<int> > aa1(10);
//************输入一般写法*************
for(i=0;i<10;i++){
for(j=0;j<10;j++){
aa1[i].push_back((10-i)*(10-j));
}
}
//************也可以这样写**********
for(i=0;i<10;i++){
aa1[i].resize(10);//固定容器的大小,之后可用C二维数组形式实现,如不固定不可这样用
}
for(i=0;i<10;i++){
for(j=0;j<10;j++){
aa1[i][j]=(10-i)*(10-j);
}
}
//************输出*******************
for(i=0;i<10;i++){
for(j=0;j<10;j++){
cout<<aa1[i][j]<<",";
}
cout<<endl;
}
//
//set ,map ,multimap ,multiset属于关联容器
//关联容器因为在自动初始化时,无法知道键所对应的值是什么,
//所以不能通过容器大小来定义,即是无法在定义关联容器时指明其大小,与vector有别,如下
//
set<set<int> > aa;
//***********二维set的输入***********************
set<set<int> >::iterator it1;
set<int >::iterator it2;
for(i=0;i<10;i++){
set<int > bb;
for(j=0;j<10;j++){
bb.insert((10-i)*(10-j));
}
aa.insert(bb);
bb.swap(set<int>());//swap在这的作用是强行释放对象内存,与clear只是清空不一样
}
//***********用迭代器输出*************************
for(it1=aa.begin();it1!=aa.end();it1++){
for(it2=(*it1).begin();it2!=(*it1).end();it2++){
cout<<*it2<<" ,";
}
cout<<endl;
}
//stack , queue ,priority_queue属于顺序容器适配器
//stack,queue是基于deque实现的,priority_queue是基于vector实现的
//
//**********入栈*******************
stack<stack<int> > aaa;
stack<int > bbb;
for(i=0;i<10;i++){
for(j=0;j<10;j++){
bbb.push((10-i)*(10-j));
}
aaa.push(bbb);
bbb.swap(stack<int>());
}
//**********出栈****************
for(i=0;i<aaa.size();i++){
for(j=0;j<aaa.top().size();j++){
aaa.top().pop();
}
}
其他的一些相关资料http://blog.csdn.net/armman/archive/2007/03/07/1523228.aspx
http://hi.baidu.com/zhengqingtech/blog/item/b07edbfbb28dd9d9b58f3128.html