jjzjj

stdvector

全部标签

c++ - `std::vector` 在调整大小时抛出 "bad allocation"异常

我在C++dll中有以下代码,我通过JNI调用它:std::vectormyVector;myVector.resize(10000000,0);我收到“错误分配”异常,即使vector的最大大小应该大于10000000。我应该使用什么工具来跟踪内存分配,以便定位任何内存泄漏?如果真的没有内存泄漏,我该如何减少vector的占用空间以确保我有足够的空间? 最佳答案 我知道这可能是找出分配大小的最差解决方案。所以这里是:主要.cpp:#include"jni.h"#include#include#if(_MSC_VER==1800)|

c++ - 如何在 Xcode 中使用 c++ std::vector 元素类型和值查看?

在visualstudio中,当我使用c++std::vector调试代码时,我可以看到其中的所有元素,甚至可以深入到每个元素,不知何故,在Xcode5.1中,我可以看到这个选项我所看到的只是vector的迭代器。这是我尝试观察vector元素时在Xcode中看到的内容:我怎样才能在调试窗口中看到vector元素。 最佳答案 对我来说(Xcode6.0.1),这只发生在引用(&)类型上。尝试以下操作之一:添加自定义监视表达式*&strLineOfChrsVec(取消引用变量的地址)。进入堆栈并观察您传递给函数的原始变量。

c++ - 在不复制的情况下构造一个范围内的 vector

我有一个类包装了大量字节,这些字节是网络数据包。该类实现了一个队列并提供(除其他外)front()函数,该函数返回构成队列中最旧数据包的字节常量vector。classBuffer{unsignedchardata[65536];unsignedintoffset;unsignedintlength;[...]//otherfieldsformaintainingwriteptretc.public:conststd::vectorfront(){returnstd::vector(data+offset,data+offset+length);}//othermethodsforac

C++ 装饰器添加到 std::vector

我有一个记录的基类,想使用装饰器添加额外的字段和比较函数,并能够链接装饰器(记录可以有电子邮件,或出生日期,或两者都有,或没有).我也会有很多这样的装饰器;每个附加字段一个,及其比较功能。完成此操作后,我将使用基类指针将对象添加到vector中。代码如下:classBaseRecord{public:virtualboolCompare();//definedelsewhereprotected:std::stringm_strName;std::stringm_strAddress:};classBaseDecorator:publicBaseRecord{public:BaseDe

c++ - Qt Creator 无法解析 STL 容器

我已经下载了适用于Windows的Qt5.4,并在Windows8.1Pro中运行它。它与MingW和QtCreator3.3一起提供。我已经使用Qt几年了。QtCreatorIDE中似乎仍然缺少一个非常必要的组件。假设类Card是用函数getSymbol()定义的:classCard{public:stringgetSymbol()const;}在代码的某处,我有一个std::vector的Card:vectorplayable;还有代码中的其他地方:playable[0].getSymbol();^-----------------Notethisdot当我在上面的行中输入句点时,

c++ - 不能将 std::vector<T> 转换为 std::initializer_list<T> 吗?

我还以为有人可以做到这一点?然而,情况似乎并非如此。为什么?还是我做错了什么?#include#include#includeusingnamespacestd;voidfn(std::initializer_listi){for(intivalue:i){cout{4,5,6})return0;}demo我问这个的原因是因为我有一个带有初始化列表的类,我是从它派生的,但需要在将初始化列表传递给基类之前修改初始化列表。我怎样才能做到这一点? 最佳答案 有时旧的方法是最好的方法:只传入范围:voidfn(std::initialize

c++ - MPI 在 C++ 中发送具有 vector 属性的结构

我想发送一个具有vector属性的结构。typedefstruct{intid;vectorneighbors;}Node;我知道我必须创建一个MPI派生数据类型,如thisanswer,但我不知道在我的情况下该怎么做,因为我在结构中有一个vector。 最佳答案 如果你想保持高水平并发送对象,那么Boost.MPI是个不错的选择。使用Boost.MPI,您可以为结构指定高级序列化。您不能(正确地)静态确定vector数据成员的偏移量。拼凑出一个有效的类型当然是可能的。但这也是搬起石头砸自己脚的好方法。您会在代码中引入假设(例如,v

c++ - 返回填充在函数内部的 const char* vector 是否是明确定义的行为

我目前正在学习vulkan。在其中一个教程中,我看到了一个大致执行以下操作的函数:#defineSOMESTRING"HelloWorld!"std::vectorbuildVector(){std::vectorvec;vec.push_back(SOMESTRING);returnvec;}当我看到这个时,我想知道:这是定义的行为吗?字符串"HelloWorld!"的内容不是位于堆栈中,因此一旦函数返回就无效了吗?如果这是未定义的行为,那么正确的方法是什么?不幸的是,由于vulkanAPI,无法使用std::string。 最佳答案

c++ - 将 zlib 与 const 数据一起使用

要使用zlib压缩/解压缩数据,首先我需要设置一个名为z_stream的结构.z_stream有两个非常量指针叫做next_in和next_out.如果我想做这样的功能:voidungzip(std::vector&dst,conststd::vector&src){z_streamstrm;//morecode}和其他类似的voidgzip(std::vector&dst,conststd::vector&src);我该怎么办?在本地复制srcstd::vectorstd::vectortmp(src);并像这样将其用作源或设置指针,strm.next_in=const_cast(&

c++ - 你如何在 XCode + C++ 中使用 std::vector?

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭10年前。出于各种原因(我向你保证它们是有效的,所以请不要谈论“使用Cocoa”),我必须使用XCode、C++、OpenGL、OpenCL(附带一点GLUT)来重建一些图形Mac上的演示(来自XP+VisualStudio2005开发)。该项目是使用“c++stdc++”作为命令行工具构建的。我的Program.h文件将我的着色器对象连接在一起、编译、链接,并以