草庐IT

STL_container_type

全部标签

c++ - STL克隆载体

!嗨我很难尝试将指针vector复制到Point。我有一个vectoroldVector我想将这个vector复制到其他vector中。所以我使用了一个复制构造函数。我是这样做的vectornewVector=vector(oldVector.begin(),oldVector.end());不幸的是,如果我运行这个函数,我会得到一个异常/错误。vectorinteratorsincompatible可能是什么问题??编辑迭代器肯定有更大的问题,看来我根本就不会使用迭代器。我想将两个STLvector相加,所以我用这样写的东西vectora,b;b.insert(b.end(),a.b

c++ - 哪个STL容器有线程安全的插入过程?

哪个STL容器有线程安全的插入过程?我希望多个线程同时插入同一个容器中。欢迎使用STL以外的任何实现(即Boost)! 最佳答案 STL容器不是线程安全的。如果您愿意,您必须通过自己的同步将其强加给您。 关于c++-哪个STL容器有线程安全的插入过程?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7939931/

c++ - 使用 STL 绑定(bind)多个函数参数

在过去,我使用bind1st和bind2nd函数来对STL容器进行直接操作。我现在有一个MyBase类指针的容器,为简单起见如下:classX{public:std::stringgetName()const;};我想使用for_each调用以下静态函数并绑定(bind)第一个和第二个参数:StaticFuncClass::doSomething(ptr->getName(),funcReturningString());我将如何使用for_each并绑定(bind)此函数的两个参数?我正在寻找类似的东西:for_each(ctr.begin(),ctr.end(),bind2Args

c++ - 在 STL 容器内转移所有权?

是否可以将vector内容的所有权从一个vector转移到另一个vector?vectorv1;//fillv1vectorv2=OvertakeContents(v1);//nowv1wouldbeemptyandv2wouldhaveallthecontentsofv1有拼接功能的列表是可以的。对于整个vector,这在恒定时间内也应该是可能的。如果不是,那为什么不呢? 最佳答案 查看std::swapvectorv1;//fillv1vectorv2;swap(v1,v2);ORv2.swap(v1);SwapReferenc

c++ - STL map<char*,char*> 析构函数

我知道映射析构函数调用每个包含元素的析构函数。会发生什么map?我看不到这段代码在/usr/include/c++/4.4中的什么地方编辑:我应该说map喜欢http://www.sgi.com/tech/stl/Map.html 最佳答案 当map被摧毁,它包含的所有元素也被摧毁。如果元素是类类型,则调用每个元素的析构函数。但是,请牢记上面map中包含的内容。正如您所料,它不是字符串——它只是指向字符串的指针。琴弦本身并没有被破坏。只有指针是。delete永远不会在指针上调用。恰当的例子:mapstrings;char*key=n

c++ - "' void* ' is not a pointer-to-object type"在没有 void* 的代码中?

我的代码有问题。在Xcode或使用C++11编译器中,此代码运行良好。但是,当我将此代码提交给在线法官时,判决显示“编译错误”。我认为他们使用的是C++4.7.1编译器,当我尝试编译它(使用Ideone)时,它说:prog.cpp:Infunction'voidprintArray(int)':prog.cpp:27:error:'void*'isnotapointer-to-objecttypeprog.cpp:27:error:'void*'isnotapointer-to-objecttypeprog.cpp:27:error:'void*'isnotapointer-to-ob

c++ - 使用 STL 函数快速填充 vector 、映射和设置

我想用一些数据快速填充这些容器以进行测试。最好和最快的方法是什么?它不应该太复杂,因此短得不人道,但也不要冗长编辑伙计们,我认为你可以用memset做一些事情,知道vector有一个下划线数组?另外,map呢? 最佳答案 boost赋值库方式(http://www.boost.org/doc/libs/1_38_0/libs/assign/doc/index.html)使用命名空间boost::assign;std::vectorv;v+=1,2,3,4,5,6,7,8,9;std::mapm;insert(m)("Bar",1)(

c++ - 包含任意类型的任意 STL 容器的函数模板

我有一个任意的STL容器C,其中包含任意类型T的元素。我想创建一个std::vector,它具有所有元素的拷贝。最干净的方法是什么?templatevoidmyfunction(Ccontainer){/*DerivethetypeTofelementswithinthecontainer*/std::vectormystack;/*Iterateovercontainerandpush_back()theelementsintomystack*/} 最佳答案 vector和set等STL结构应该包含类型定义为T的value_typ

c++ - "missing type specifier"构造函数声明错误

我在2个不同的文件中有2个类:正则矩阵.h:#ifndef_RM_H#define_RM_H#include"SparseMatrix.h"...classRegMatrix{...RegMatrix(constSparseMatrix&s){...}//ctor...};#endif稀疏矩阵.h:#ifndef_SM_H#define_SM_H#include"RegMatrix.h"...classSparseMatrix{...SparseMatrix(constRegMatrix&r){...}//ctor...};#endif在构造函数行上我得到了错误:错误C4430:缺少类

c++ - 对 STL 集使用比较器

检查以下代码:stringtoLowerCase(conststring&str){stringres(str);inti;for(i=0;ileagues;set::iteratoriter;leagues.insert("BLeague");leagues.insert("aLeague");//leagues={"aLeague","BLeague"}leagues.insert("ALeague");for(iter=leagues.begin();iter!=leagues.end();iter++)cout输出是:aLeagueBLeague这让我很震惊。我认为(并期待)输