草庐IT

vector_tostr

全部标签

c++ - 创建对象 vector 时,不唯一地为每个对象调用默认对象构造函数

我正在尝试创建一个对象vector,并希望为vector中的每个对象唯一地调用非默认构造函数。我在下面有一个简化的例子。在我的示例中,我有一个具有两个构造函数的对象,默认(无参数)和非默认(1个参数)。当我使用默认构造函数(v1)初始化大小为10的vector时,构造函数被调用10次(从随机数可以看出)。但是,当我尝试使用对象非默认构造函数(v2)初始化一个vector时,对象构造函数被调用一次并将该对象复制到vector中的其余元素(x不再是许多不同的随机数)。是否可以初始化N个对象的vector,以便为每个对象调用每个对象的非默认构造函数?示例代码:#include#include

c++ - STL vector 之间的自动转换

我想要的是复制一个std::vector到另一个std::vector带赋值运算符,其中myStruct可以分配一个int.所以我写了这段代码:#include#includeusingnamespacestd;structmyStruct{myStruct(int&a):_val(a){}myStruct(int&&a):_val(a){}myStruct&operator=(int&a){_val=a;return*this;}int_val;};intmain(){vectorivec;ivec.push_back(1);vectorsvec=ivec;return0;}它给我错

c++ - 为什么不允许使用可变长度数组作为 vector 元素?

例如:#includeusingnamespacestd;intmain(){vectorvec;//seriouscompilererrorvectorvec={{1,2}};//error:arraymustbeinitializedwithabrace-enclosedinitializer}另外,如何纠正第二个的语法?我已经使用了大括号括起来的初始值设定项。 最佳答案 它不是变长数组,C++中不存在。它是一个没有大小说明符的数组,是一种不满足大多数(所有?)vector运算要求的不完整类型。第二次尝试复制c数组(列表初始化总

C++0x auto 无法推断出 vector<int> 成员函数指针的类型

使用GCC4.7.0(g++-std=c++0xtest.cpp)编译以下简单的C++代码给出了编译错误消息:error:unabletodeduce'auto'from'&std::vector::push_back>'我的问题是为什么在这种简单的情况下auto不能推断出成员函数指针的类型?#include#includeintmain(void){//worksvoid(vector::*pb)(constvector::value_type&)=&vector::push_back;//notworkautopbb=std::mem_fn(&vector::push_back);

c++ - 查找 vector 中位于指定范围内的元素

我有一个排序的整数元素vector。示例如下:vectorA={3,4,5,9,20,71,89,92,100,103,109,110,121,172,189,194,198};现在给定以下“开始”和“结束”范围,我想找出vectorA的哪些元素落入开始和结束范围。intstartA=4;intendA=8;intstartB=20;intendB=99;intstartA=120;intendC=195;例如,elementslyinginrangestartAandstartBare:{4,5}elementslyinginrangestartAandstartBare:{20,7

c++ - std::vector::insert 与 std::list::operator[]

我知道std::list::operator[]没有实现,因为它的性能很差。但是std::vector::insert和std::list::operator[]一样低效。背后的解释是什么? 最佳答案 std::vector::insert的实现是因为std::vector必须满足SequenceContainerconcept的要求,虽然operator[]不是任何概念(据我所知)所必需的,但可能会在c++17的ContiguousContainer概念中添加。所以operator[]被添加到可以像数组一样使用的容器中,而inse

C++ OpenMP 和 std::vector<bool>

为什么以下代码对bool的std::vector不起作用(如预期的那样)?boolvector中的某些元素随机为假。对于intvector,一切正常(测试了不止3个循环)。我在ubuntu14.0464位上使用g++4.8.4。#include#includeusingnamespacestd;classTestBool{public:TestBool(){}booltest(){returntrue;}inttestInt(){return10;}};voidtestBVec(vector&bv,size_tloop){cout&iv,size_tloop){couttv(10);s

c++ - 将派生类的 unique_ptr 添加到基类 unique_ptr 的 vector 中

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭6年前。Improvethisquestion我有一个std::unique_ptr我想添加到std::vector>.std::unique_ptrderivedObject;std::vector>vec;vec.push_back(derivedObject)//Invalidarguments

c++ - 从成对 vector 中获取唯一元素的有效方法

我有一个整数对vector,看起来有点像这样:(0,1)(1,9)(2,3)(6,1)(4,0)我想从那里提取独特的元素,以便结果如下所示:‍‍0‍,1,9,2,3,6,4(基本上只是所有没有重复的数字)目前我是这样做的:std::vectorgetElements(std::vector>S){std::vectorV;for(std::vector>::iteratori=S.begin();i!=S.end();i++){if(std::find(V.begin(),V.end(),i->first)==V.end()){V.push_back(i->first);}if(std

C++如何正确复制指针的容器( vector )?

有几次我偶然发现我有一个需要复制的指针容器。假设我们有以下类层次结构:学生(基础类(class))新生(子类)大二(子类)初级(子类)高级(子类)学生服务StudentService类有一个std::vectorstudents字段和以下构造函数:StudentService::StudentService(std::vectorstudents){//code}只使用std::vector::operator=是不正确的运算符并写入this->students=students,因为这只会复制指针地址,所以如果有人从外部删除了这些指针指向的对象,那么StudentService类就会