9.1解释下列初始化,指出哪些是错误的,为什么?
1 int ia[7] = {0,1,1,2,3,5,8}; 2 string sa[6] = {"a","b","c","d","e","f"};
1 vector<string> svec(sa,sa+6); 2 list<int> ilist(ia+4,ia+6); 3 vector<int> ivec(ia + 8);//错误,溢出 4 lise<string> slist(sa+6,sa);//错误,溢出越界
9.2 创建和初始化一个vecior对象有四种方法,为每种方式提供一个例子,并解释每个例子生成的vector对象包含什么值。
//创建一个指定数目元素的vector对象,并初始化为0 vector<int> vec(10);//10个0 //创建一个指定数目元素的vector对象,并初始化为指定数值 vector<int> vec(10,1);//10个1 //通过数组赋值 inr ia[3] = {1,2,3); vector<int> ivec(ia,ia+3);//1,2,3 //通过其他vector对象赋值 vector<int> ivec1(10,1); ;//10个1 vector<int> ivec2(ivec1);//10个1
9.3 解释复制容器对象的构造函数和使用两个迭代器的构造函数之间的差别。
9.4 定义一个list对象来存储deque对象里的元素,该deque对象存放int型元素。
1 list< deque<int> > ld; //注意一定要加空格
9.5 为什么我们不可以使用容器来存储iostream 对象。
9.6 假设有一个名为Foo的类,这个类没有定义默认构造函数,但提供了需要一个int 类型参数的构造函数,定义一个存放Foo 的list对象,该对象有10个元素。
1 list<Foo> flist(10,1);
9.7 下面的程序错在哪里?如何改正。
list<int> lst1; list<int>::iterator iter1 = lst1.begin(), iter2 = lst1,end(); while(iter1 < iter2)
更正
list<int> lst1; list<int>::iterator iter1 = lst1.begin(), iter2 = lst1,end(); while(iter1 != iter2)
9.8 假设vec_iter与vector对象的一个元素捆绑在一起,该vector对象存放string类型的元素,请问下面的语句实现什么功能?
if(vec_iter->empty() ) /*.....*/
答:判断所指向的元素是否为空。
9.9 编写一个循环将list容器的元素逆序输出。
Zinclude<list> using namespace std; int main() { list<int> iil; for(int i = 0;i<10;i++) { iil.push_back(i); } for(list<int>::iterator i = iil.end();i != iil.begin();) { cout<<*(--i)<<" "; } return 0; }
9.10 下列迭代器的用法哪些(如果有的话) 是错误的?
const vector<int> ivec(10); vector<string> svec(10); list<int> ilist(10); (a) vector<int>::iterator it = ivec.begin(); // 错误,const (b) list<int>::iterator it = ilist.begin() + 2;/错误,list不支持 +2 (c) vector<string>::iterator it = &svec[0]; (d) for(vector<string>::iterator it = svec.begin();it != 0;++it) //..... //错误,不能和0比较
原文:http://www.cnblogs.com/suixinwuji/p/4365879.html