草庐IT

EidosValue_Int_vector

全部标签

c++ - std::vector 的替代方案,因为重新分配会使指向元素的指针无效

这可能是一个新问题(我是),但我已经尽可能多地搜索以找到以下问题的解决方案我有以下场景(当然是经过大量提炼的):classContainer{std::vectorobj;};classPointers{std::vectorobj_ptr;};我有一个例程,将Object类型的元素推回Container中的vectorobj,然后将指向同一元素的指针推回obj_ptr。总体思路是obj_ptr[i]==&obj[i]贯穿程序的整个生命周期。我遇到的问题是,每当obj的容量需要增加时,所有指针都会失效,从而使obj_ptr完全无用。我已经尝试过使用最大预期大小(大约10^7)的obj.

c++ - uint32、int16、uint8 .. 为什么这些常用数据类型没有纳入标准

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭5年前。Improvethisquestion多年来,在涉及C/C++的多个组织和各种项目中,我发现通过定义本地版本的types.h解决了对固定宽度整数的需求,它看起来像这个:-typedefsignedcharint8;typedefunsignedcharuint8;typedefsignedshortint16;typedefunsignedshortuint16;typedefsignedlongint32;typedefun

c++ - 字符串和 vector 元素<string>的区别

这个问题在这里已经有了答案:WhydoesC++allowanintegertobeassignedtoastring?(4个答案)关闭5年前。我是编程新手。我正在学习C++中的vector。我很好奇为什么strings=42;会导致错误但是vectorvec(3);vec[0]=42;没有。谢谢!

c++ - 在 C++ 中将字符串转换为 vector

是否可以在C++中轻松地将字符串转换为vector?strings="12345"vector(s.begin(),s.end(),c=>c-'0');//somethinglikethat目标是得到一个整数vector,如{1,2,3,4,5};我不想使用循环,我想写一个清晰简单的代码。(我知道无论如何下面都会有一些循环)。字符串总是一个数字。 最佳答案 你可以从开始strings="12345"vectorv(s.begin(),s.end())然后使用的transform:transform(s.begin(),s.end()

C++ 标准 vector resize() 函数

resize()根据给定的大小添加/删除元素。reserve()保留内存空间,不会重新分配内存。我的问题是resize是否也像vector的容量一样工作,只会不增加?要添加,将组合:std::vectorvector;vector.reserve(5);vector.resize(5);有意义吗?它是多余的吗?这里的目标是能够覆盖vector中的值,而无需vector分配任何额外空间。 最佳答案 来自thissite:resize():这使您可以将vector的大小更改为您想要的任何大小。它将用元素填充底层缓冲区。reserve()

c++ - vector 声明 "expected parameter declarator"

这个问题在这里已经有了答案:Whycan'tmemberinitializersuseparentheses?(2个答案)关闭5个月前。我在类的私有(private)成员变量中有一行代码:vectordQdt(3)在xcode中编译时,会出现错误“expectedparameterdeclarator”。我想我提供了足够的信息。我认为此声明没有任何问题。

c++ - 将 int 转换为 size_t

我想知道当我传递integer时clang编译器的以下警告到std::initializer_list:non-constant-expressioncannotbenarrowedfromtype'int'to'unsignedlong'ininitializerlist为什么可以int被转换为size_t但是一个int不会传递给std::initializer_list,即intmain(){size_ts_t=0;inti=0;std::initializer_listi_l={i};//warnings_t=i;//nowarningreturn0;}

c++ float* 数组作为对 std::vector<float> 的引用

我想创建一个std::vectorvpd这将是对float*的引用.float*old=newfloat[6];for(inti=0;ivpd(6);autorefasd=&*vpd.begin();*refasd=*old;vpd[0]=23;cout如果我想得到23,我应该如何修改代码呢?来自cout? 最佳答案 你不能。std::vector并非旨在获取原始指针的所有权。也许你可以凑合用std::unique_ptr,但更好的解决方案是直接使用std::vector. 关于c++f

c++ - C++ 中将内置类型 (int) 转换为 bool 的首选方法是什么?

用VisualC++编程时,我想每个开发者都习惯于看到警告warningC4800:'BOOL':forcingvaluetobool'true'or'false'不时。原因显然是BOOL被定义为int并且直接将任何内置数值类型分配给bool被认为是一个坏主意。所以我现在的问题是,给定任何要解释为boolean值的内置数字类型(int、short、...),将这个值实际存储到变量中的/您的首选方式是什么类型bool?注意:虽然混合使用BOOL和bool可能不是一个好主意,但我认为无论是在Windows还是其他地方,这个问题都不可避免地会出现,所以我认为这个问题既不是Visual-C++

C++ 访问冲突写入位置 0x0...设置 int *

我已经查看了这里和其他地方的各种问题,但我仍然无法解释我遇到的访问冲突错误。“访问冲突写入位置0x00000000”对应于NULL指针,对吗?我已经声明了一个int指针,稍后我尝试在该位置设置一个值。我声明指针的时候不应该分配内存空间吗?如果这有点笨拙,请原谅我,但我更像是一个Java/AS3的人。这是我的部分代码...int*input;char*userInput[1];int*output;int_tmain(intargc,_TCHAR*argv[]){while(1){srand(time(0));*input=(int)(rand()%10);它在最后一行中断。