比如说:vector<derived_class> vec1;
vector vec2 = vec1;
写代码过程中想要将装有不同子类的很多容器都传参到一个
函数(包含一个装有父类容器的形参)中做一些基本操作,想
通过这样的方式减少重复写多个相似函数
还是说我这样必须通过模板实现,可以给一些提示么
vector vec 就是定义了一个vector容器,可以通过
vec.push_back(), push_font(),insert(position,value) 想vector中添加一个指定值
list ilist<初始大小,默认赋值> list ilist(20 -1) 初始20个值为-1的list
然后操作可以参考这些这些类封转的方法。
关联容器:set map mutimap mutiset
就是应该用模板实现,这是最简单的。
就是应该用模板实现,
vector vec 就是定义了一个vector容器,可以通过
vec.push_back(), push_font(),insert(position,value) 想vector中添加一个指定值
list ilist<初始大小,默认赋值> list ilist(20 -1) 初始20个值为-1的list
然后操作可以参考这些这些类封转的方法。
关联容器:set map mutimap mutiset
vector vec1;
vector vec2 = vec1;
1. 这里stl中的模板参数必须写全 也即vector vec2
2. 另外在c++的类世界里, 仅有引用和指针才可以将子类对象赋值给父类对象即 base_class* b = new derived_base(); 或 base_class& b = derived_class(); 所以这里的vector声明必须是vector或vector
3. 在c++的模板世界里, vector和vector是两个不同的类, 而vector提供的构造函数表面上满足你需要的, 仅有一个拷贝构造函数,因为是不同的类, 所以编译必然是会出错的。
幸好vector还提供了一个range con可以用来解决你的问题,
即vector dv;
vector bv(dv.begin(), dv.end());
vector vec1;
vector vec2 = vec1;
1. 这里stl中的模板参数必须写全 也即vector vec2;
2. 另外在c++的类世界里, 仅有引用和指针才可以将子类对象赋值给父类对象即 base_class* b = new derived_base(); 或 base_class& b = derived_class(); 所以这里的vector声明必须是vector或vector
3. 在c++的模板世界里, vector和vector是两个不同的类, 而vector提供的构造函数表面上满足你需要的, 仅有一个拷贝构造函数,因为是不同的类, 所以编译必然是会出错的。
幸好vector还提供了一个range con可以用来解决你的问题,
即vector dv;
vector bv(dv.begin(), dv.end());
ca原来是<>的内容被过滤掉了