草庐IT

vector_tostr

全部标签

c++ - 使用给定键填充包含所有多映射值的 vector

给定一个multimapM什么是创建vector的巧妙方法?具有特定键的M中的所有值。例如,给定一个多重映射,我如何获得映射到值123的所有字符串的vector?一个答案很简单,从下界到上界循环,但是有没有一种简洁的无循环方法? 最佳答案 这是STL风格的实现方式://Thefollowingdefineisneededforselect2ndwithDinkumWareSTLunderVC++#define_HAS_TRADITIONAL_STL1#include#include#include#include#include#i

C++ vector::push_back 使用默认拷贝构造函数

我有一个类(Uniform),它有一个带2个参数的构造函数和一个默认的复制构造函数(它只包含int、float、一个std::vector和一个std::map)。我创建了一个std::vectoruniforms我想用uniforms.push_back()行。我使用这段代码来做到这一点(第二行只是在这里测试复制构造函数,因为它目前失败了)Uniformuni(uniform_name,type);Uniformuni2=uni;uniforms.push_back(uni2);默认构造函数工作正常,“uni2=uni”编译没有问题(因此默认复制构造函数也可以),但push_back

c++ - std::vector::erase() 不想 move

我有一个std::vector其中Foo是一个包含Foo(Foo&&)noexcept的类.向容器中添加对象完美无缺,但是使用std::vector::erase(iterator)删除它们不会,GCC4.7会尝试调用我已删除的赋值运算符。确切的错误信息是:错误:使用已删除的函数‘Foobar&Foobar::operator=(constFoobar&)编辑:当然std::vector调用赋值运算符,而不是复制构造函数(您也可以在错误消息中看到这一点)。已在说明中修复它,抱歉。这里是请求的示例源代码:#includeclassFoo{public:Foo(){}Foo(Foo&&ot

c++ - std::vector 的不完整类型

当我尝试以下操作时,GCC编译器会报错(见下文)。classFace需要不完整,因为它包含指向classElement的指针,同样包含指向classFace的指针。换句话说,类之间存在循环依赖。我该如何解决?错误:“sizeof”对不完整类型“Face”的无效应用classFace;//needstobeincompleteclassElement{std::vector>face;};classFace{std::vector>elm;}; 最佳答案 解决此问题的一种方法是声明Element和Face的析构函数和构造函数,但不在h

c++ - 为什么指针访问比 vector::iterator 访问慢? (编译器代码生成)

好吧,问题标题有点蹩脚,但我真的不知道如何更好地表达这个问题。我遇到的问题是给定一个std::vector与T*+size_tcount我的编译器(VisualStudio2005/VC++8)在指针上循环时实际上会生成比在vector上循环时更糟糕的代码。也就是说,我有一个包含vector的测试结构和另一个包含指针+计数的测试结构。现在,当编写语义上完全相同的循环结构时,带有std::vector的版本比带有指针的版本快显着(也就是说>10%)。您将在下面找到代码以及生成的程序集。如果有人可以解释这里发生了什么,那就太好了。如果您查看程序集,您会注意到原始指针版本如何生成稍微多一些的

c++ - 遍历 vector 的元素时索引类型应该是什么?

这个问题在这里已经有了答案:Iterationoverstd::vector:unsignedvssignedindexvariable(18个答案)关闭6年前。我通常以这种方式迭代vector:for(inti=0;i但是编译器通常会给我这个警告:warning:C4018:'那么如果一个int不对,索引应该是什么类型呢?vector::size()似乎是“size_type”类型,但我宁愿使用更有意义的类型。有什么建议吗?

c++ - 使用 STL 从 map<T,Z> 的键填充 vector<T>

mapm=...;vectorv;v.reserve(m.size);for(map::iteratorit=m.begin();it!=m.end();++it){v.push_back(it->first);}是否有使用某些STL函数的更好的1行版本?编辑:不使用c++11! 最佳答案 可移植:structSelectKey{templateFoperator()(conststd::pair&x)const{returnx.first;}};std::transform(m.cbegin(),m.cend(),std::bac

c++ - 希望在 STL vector 中找到 C++ STL vector

我正在尝试查看vectorv1是否包含在vectorv2中。我的vector是有序的,需要保留顺序。例如,如果v1=(a,b)并且v2=(e,f,a,b),我想在v2中得到一个指向a的迭代器。STLfind只能在vector中找到一个对象。我想我想要的是类似于string::find的东西。STL中有没有函数可以做到这一点? 最佳答案 看起来您想在另一个序列中搜索子序列。你可以用std::search做到这一点来自标准库。autoit=std::search(v2.begin(),v2.end(),v1.begin(),v1.end

c++11 成员函数从 unique_ptr 的 vector 返回原始指针的 vector

我开始使用C++11功能,我喜欢使用智能指针来拥有对象。这是我的类(class):classMyClass{public:vectorget_objs()const;private:vector>m_objs;};语义是MyClass拥有一系列MyObject通过make_unique创建().get_objs()返回一个原始指针vector,以便各种调用者更新对象。因为那些调用者不拥有对象,所以函数不返回vector.但这意味着我需要实现get_objs()像这样:vectorMyClass::get_objs()const{vectorret;for(autoobj:my_objs

c++ - 用于游戏开发的二维 vector 建模

制作我的Asteroids克隆(在C中)我相当喜欢基于vector的实体,但我只是将它们编码为x,y点数组。这对于像Asteroids这样的东西来说已经很好了,但是如果我想制作更复杂的2D模型,我应该怎么做?我注意到有anawfullotof3Dmodellingsoftware在那里,以及关于将3D模型导入一个人的C/C++程序以便与OpenGL一起使用的大量教程和帮助。不过,与3D相比,我对创建基于vector的2D模型更感兴趣,因为我非常乐意继续尝试2D游戏一段时间。是否存在二维建模这样的概念?是否有用于创建和导出2D模型的工具和专门用于导入2D模型的库,或者只是在3D软件中创建