草庐IT

static_vector

全部标签

c++ - vector 数据链接

我有一个Monsters类,当创建一个实例时,它应该将每个怪物与该武器相关联。前任。Gryphon怪物应该有gryphonattack1和gryphonattack2,当然攻击的名称是TBD,但现在我们使用gryphonattack1和2。目前我有这个。#includetypedefenum{Living,Dead,Nature}Race;typedefenum{Gryphon,Oracle,Mercenary,Templar,Satyr,FallinAngel,ArcAngel,Satan,Grimreaper,UnbaptizedBabies,Boggart,Succubus,Me

c++ - 为什么允许将 void* 的 static_cast 转换为另一种类型?

我刚刚在读这个帖子:Simplec++pointercasting这让我开始思考为什么不允许在不同指针类型之间进行static_cast(允许的情况除外)除非您将static_cast转换为void*作为中间步骤。在我看来,要么两者都被允许,要么两者都不被允许。这是一个例子:char*cs;unsignedchar*ucs;cs=reinterpret_cast(ucs);//1)allowed,ofcoursecs=static_cast(ucs);//2)notallowed:incompatiblepointertypescs=static_cast(static_cast(uc

C++ - 将对象添加到 std::vector,在循环中实例化

我是专家级别的Java程序员,正在尝试将我的知识移植到C++。这不是家庭作业,只是我试图学习C++等价物的概念。我想做的是使用循环“生成”自定义类型的对象列表。这就是我在Java中的做法:publicclassTestClass{privateArrayList_exampleObjects;privateint_numObjects=10;publicvoidpopulateList(){_exampleObjects=newArrayList();for(inti=0;isuper简单的东西。创建一个列表,遍历任意循环并向其中添加对象。然后,循环遍历这些对象并将它们用于任何目的。测

c++ - 为什么 vector 被认为是 nothrow_move_constructible?

vector的移动构造函数的规范是(从标准中复制出来的):vector(vector&&);注意缺少noexcept.但是gcc4.8和Clang3.2都报告了std::is_nothrow_move_constructible>::value返回真(即1):#include#includeintmain(){std::cout>::value造成这种明显差异的原因是什么? 最佳答案 标准允许实现根据方法加强异常规范17.6.5.12Restrictionsonexceptionhandling[res.on.exception.h

c++ - 在 VS2013 上测量 vector<unique_ptr> 的性能?

TL;DR是VS2013的优化器混淆了,还是我的测量有误,或者全局虚拟变量实际上是否需要可变才能使测试有效或____?免责声明:这主要是出于“学术”兴趣,我不认为我看到的差异会真正影响任何生产代码。简介:我最近的一些测量让我找到了thisquestion因为我发现std::vector>之间存在显着差异和boost::ptr_vector在VS2013上。(另见评论there)看来,对于我的特定测试用例,访问boost::ptr_vector中的元素比使用unique_ptrvector快50%!我的测试代码在这里:http://coliru.stacked-crooked.com/a

c++ - std::vector::erase(item) 需要为项目定义赋值运算符?

我有一个类C没有定义operator=.我正在尝试使用这样的vector:std::vector>vec;.现在,我的问题是完成后我无法删除这对。编译器提示缺少operator=对于C.我不能有一个没有这个运算符的类的vector吗?我该如何解决这个问题?我无法将作业添加到C.这是我得到的错误:errorC2582:'operator='functionisunavailablein'C'C:\...\include\utility1961my-lib这是我的代码:voidRemove(constC&c){autoi=cs_.begin();while(i!=cs_.end()){if

c++ - 如何以优雅的方式将 vector 复制到STL中的 map

目前,我在vector中有一些数据。目前,我想将vector转换为map。所以它会组织如下(N是偶数)。vector:元素1、元素2、元素3、元素4...元素N。map:key1:元素1,value1:元素2,key2:元素3value2:元素4...目前,我只是枚举vector,有没有其他优雅的方式来做到这一点。C++11是首选。谢谢。for(intx=0;x 最佳答案 您的代码有效(注意MichaelJ的建议,如果有奇数则不处理最后一个元素)。有一点可以改进。调用map[vec[x]]使用value_type的默认构造函数构造一

c++ - 如何正确使用 vector 范围构造函数?

我想将文本文件中的所有行加载到vector中通过使用其范围构造函数,然后通过cout输出它们:#include#include#include#includeusingnamespacestd;intmain(){ifstreamfile("file.txt");vectorstrings(istream_iterator(file),istream_iterator());for(autos:strings)cout当尝试编译上面的代码时,我遇到了几个错误,例如:error:nomatchingfunctionforcallto‘begin(std::vector>(&)(std::

c++ - reinterpret_cast<char*>(p) 或 static_cast<char*>((void*)p)) 用于字节指针差异,哪个更好?

在提取用于指针运算的原始字节指针时,以下三种类型转换之间有什么区别吗?(假设char为1个字节的平台。)static_cast((void*)ptr))reinterpret_cast(ptr)(更新)或:static_cast(static_cast(ptr))我应该选择哪个?更详细...给定一个类中两个成员对象的指针,我想计算一个到另一个的偏移量,这样我就可以在给定偏移量的情况下重建一个成员的地址和另一个成员的地址。//assumeddatalayout:structC{//...Aa;//...Bb;}我目前使用的代码是这样的:voidapproach1(A*pa,B*pb){/

c++ - 比较 vector 的不等式仅在 vector 元素上使用相等运算符。为什么?

我的两个编译器(g++和clang)都不会编译这个:#includestructA{friendbooloperator!=(Aconst&a1,Aconst&a2){returnfalse;}};intmain(){std::vectorv1,v2;return(v1!=v2);}错误是STL_algobase.h中某处的!(*__first1==*__first2)无效。换句话说,它完全忽略了A的现有运算符!=。不用说,如果我定义一个operator==然后它编译并工作。按照标准应该是这样的吗?如果是,为什么? 最佳答案 是因为