草庐IT

EidosValue_Int_vector

全部标签

c++ - 转换 shared_ptr 类型 vector 的迭代器

如何转换shared_ptr类型vector的迭代器?考虑以下示例:typedefboost::shared_ptrtype_myClass;vectorvect;vector::iteratoritr=vect.begin();while(itr!=vect.end()){//Followingstatementworks,butIwishtorathercastthis//toMyClassandthencallafunction?(*itr)->doSomething();} 最佳答案 您不想转换,而是提取对该对象的引用:My

C++ vector 内存使用 - 它曾经被释放过吗?

我知道,当超过capacity()时,vector的大小会加倍。这个操作需要一些时间,这就是为什么vector应该有分摊常数时间来使用push_back()添加元素。我想知道的是...当一个vector缩小到size()小于capacity().vector是否会放弃它们使用的内存,或者直到vector被销毁它才消失?如果它们不缩小尺寸,可能会浪费大量内存,但我从未听说过它们具有该功能。 最佳答案 不,它在销毁之前永远不会被释放(即容量永远不会减少)。释放一些内存的常用习惯是创建一个正确大小的新vector,然后使用它:std::v

c++ - std::vector 和复制构造函数

vectorv;Xx;v.push_back(x);v.push_back(x);v.push_back(x);为什么这段代码调用类X的复制构造函数6次?(使用g++4.7.2STL)拜托,我想知道准确地这个特定的STL在引擎盖下发生了什么。 最佳答案 当您使用push_back()插入x时,内存最终会重新分配以便为新元素腾出空间。然后必须使用复制构造函数X(constX&)复制已经插入的成员。如果你插入v.reserve(3);至少前三个push_back()的重新分配被阻止,因此,将只有三个调用X(constX&)

c++ - 在 C/C++ 中通过套接字发送 int

我在通过套接字发送整数数组时遇到了麻烦。代码看起来像这样程序一:(在windows上运行)intbmp_info_buff[3];/*connectingandothers*//*Sendinformationsaboutbitmap*/send(my_socket,(char*)bmp_info_buff,3,0);程序2:(在中微子上运行)/*bufftostorebitmapinformationsize,with,length*/intbmp_info_buff[3];/*stuff*//*Readinformationsaboutbitmap*/recv(my_connect

c++ - C++11 中 RAW 指针的智能 vector ?

我正在使用一个旧的开源库,具有以下感兴趣的(简化的)API://someclassthatholdsarawpointertomemoryontheheap//DOESNOTdeleteitinitsdestructor//DOESNOTdoa"deep"copywhencopied/assigned(i.e.,aftercopyingbothobjects//willpointtothesameaddress)classPoint;//functionusedtoconstructapointandallocateitsdataontheheapPointAllocPoint();/

c++ - 在 C++ 中检查 stoi() 函数中的 int 限制

这个问题在这里已经有了答案:c++parseintfromstring[duplicate](5个答案)关闭9年前。我得到了一个字符串y,我确信它只包含数字。在使用stoi函数将其存储在int变量之前,如何检查它是否超出整数范围?stringy="2323298347293874928374927392374924"intx=stoi(y);//TheprogramgetsabortedwhenIexecutethisasitexceedsthebounds//ofint.HowdoIchecktheboundsbeforeIstoreit?

c++ - std::vector 成员的移动语义

我想确保我正确理解了这一点。我在这里问它,因为我没有明确说明它的资金。例如我有一个三角形网格类,基本上是这样构建的:classMesh{public:structFace{unsignedinta;unsignedintb;unsignedintc;};//...private:std::stringfile;std::vectorvertices;std::vectornormals;std::vectortexcoord;std::vectorfaces;}由于网格中的数据可能会变得非常大,我想实现适当的移动语义。对于指针类型,我完全理解这一点,但要触发右值构造函数,我需要使用移动

c++ - 错误 C2280 : attempting to reference a deleted function (atomic<int>)

我有一个classA带有成员变量_atomicVar类型std::atomic.#includeclassA{public:A();~A();private:std::atomic_atomicVar;};如果我构建项目,我会收到以下错误:errorC2280:'std::atomic::atomic(conststd::atomic&)':attemptingtoreferenceadeletedfunction我主要是一名C#开发人员,所以我还不了解C++的每个细节(还)。我不知道我在哪里使用atomic的复制代码.我还尝试初始化_atomicVar:std::atomic_ato

c++ - 为什么不能将一个 int(代表一个 ASCII 字符)转换为一个 std::string 而不用花括号包裹 int?

intmain(){std::stringA;A+=(std::string)65;std::cout上面的代码不起作用。它会引发编译器错误。但是下面的代码有效。intmain(){std::stringA;A+=(std::string){65};std::cout当我将65括在大括号中时,它被解释为我想要的ASCIIA,但没有大括号,程序将无法运行。我还尝试将多个数字放在大括号中,如下所示:intmain(){std::stringA;A+=(std::string){65,66};std::cout这将打印出AB。我只希望有人能为我解决这个问题。 最佳

c++ - 给定排序 vector 找到从负到正的转换

给定一个排序的std::vector,我想使用C++11-STD函数找到元素从负向正过渡的索引。我知道我可以使用二进制搜索来实现它,但我对标准库中是否有任何函数感兴趣,类似于一元find_if,这将有助于此搜索(可能与正确的lambda表达式有关)。 最佳答案 您应该找到lower_bound共0个:autoiter=std::lower_bound(vec.begin(),vec.end(),0);生成的迭代器将指向最早的位置,您可以在该位置插入0而不会打乱元素的顺序。同样,upper_bound将返回最右边的此类迭代器。算法的运