草庐IT

vector_c

全部标签

c++ - 为什么双端队列使用的 RAM 比 C++ 中的 vector 多得多?

我遇到了一个问题,我正在处理需要使用某种二维数组的地方。该数组的宽度是固定的(四列),但我需要即时创建额外的行。为此,我一直在使用vector的vector,并且一直在使用一些包含以下内容的嵌套循环:array.push_back(vector(4));array[n][0]=a;array[n][1]=b;array[n][2]=c;array[n][3]=d;n++添加行及其内容。问题是我试图创建的元素数量似乎用完了内存,所以我减少了我使用的数量。但后来我开始阅读双端队列,并认为它可以让我使用更多的内存,因为它不必是连续的。我在这个循环中将所有提及的“vector”更改为“dequ

c++ - 更好地将: reserve vector capacity,预分配为大小或循环回退是什么?

我有一个函数,将指向char数组和段大小的指针作为输入参数,并调用另一个需要std::array的函数。这个想法是将输入char数组“分割”成相等的部分,并形成字符串数组。输入的char数组格式是确定大小的几个较小的数组(或字符串),它们串联在一起。尽管它们可能是零,但并不假定它们为零终止。段大小5和元素数量10的示例:chark[]="1234\0001234\0001234\0001234\0001234\0001234\0001234\0001234\0001234\0001234\000";charm[]="1234\00067890987654321\000234567809

C++,根据另一个 vector 对一个 vector 进行排序

这个问题在这里已经有了答案:HowcanIsorttwovectorsinthesameway,withcriteriathatusesonlyoneofthevectors?(9个回答)关闭9个月前。我得到的最好的例子是我想根据分数对名称进行排序。vectorNames{"Karl","Martin","Paul","Jennie"};vectorScore{45,5,14,24};因此,如果我将分数排序为{5,14,24,45},那么名字也应该根据他们的分数排序。

c++ - 我什么时候应该使用 vector<int>::size_type 而不是 size_t?

在thisquestion我看到以下内容:for(vector::size_typeix=0;ix!=ivec.size();++ix){ivec[ix]=0;}我明白为什么int这里没有使用,但为什么不直接使用size_t?什么情况下应该用vector::size_type而不是size_t? 最佳答案 初级使用时间size_type在模板中。虽然std::vector::size_type通常是size_t,some_other_container::size_type可能是其他类型1。允许用户添加到std的少数内容之一命名空间

独立 std::threads 的 C++ std::vector

我正在构建一个实时软件,其中我在main()上有一个主无限循环和用于读取和处理数据的线程。其中一个问题是保持运行线程的std::vector向它们发送信号并监视执行。所以我把这段代码放在一起:#include#include#include#include#includenamespacereaderThread{voidstart(intid){while(1){std::coutreaderThreads;for(int&reader:readers){std::threadth(readerThread::start,reader);readerThreads.push_back

c++ - 封装 std::vector 以允许迭代但没有别的

我想在我的类中隐藏一个vector场,但允许通过它的元素轻松迭代,但没有别的。这样那个类(class)的客户就可以做for(autoelement:foo.getElements()){}但不是foo.getElements()[42];是否有一些简单的方法可以在不创建新的混淆类型的情况下实现这一目标? 最佳答案 我不能说什么是什么不是“新的混淆类型”。但这足以满足基于范围的for的需求:templateclassiterator_range{public:iterator_range(Iterbeg,Iterend):beg_(b

c++ - 如何将不同的模板类型放入一个 vector 中

我想构造一个长度或参数数量未知的消息。我拿了一个简单的模板,比如templateclassArgument{public:intsize;inttype;Tdata;};还有一些重载addMessage(intvalue){Argument*a=newArgument;vec.push_back(a);}(对于字符串等也是如此)我尝试将它们全部插入一个vector中。我试过了std::vectorvec;std::vector*>vec;std::vector*>vec;但这一切似乎都不起作用。有没有办法做到这一点?提前致谢。 最佳答案

c++ - 返回 std::vector - 正确的方法

我正在尝试创建一个将返回std::vector的类方法,但我对执行此操作的最佳方法有点困惑。我使用的方法是定义以下方法:std::vector*GetBins(void);在方法中,分配一个新的std::vector,我用数据填充它。我正在返回一个指向这个的指针。std::vector*Frequency::GetBins(void){std::vector*rtnVec=newstd::vector();for(_itMap=_mapFreq.begin();_itMap!=_mapFreq.end();_itMap++){rtnVec->push_back((*_itMap).fi

c++ - glm 平移矩阵不平移 vector

我在开始使用glm(在VS2010中)时遇到了一些非常简单的错误。我有这个简短的代码:glm::mat4translate=glm::translate(glm::mat4(1.f),glm::vec3(2.f,0.f,0.f));glm::vec4vector(1.f,1.f,1.f,0.f);glm::vec4transformedVector=translate*vector;transformedVector的结果与其原始值相同(1.f,1.f,1.f,0.f)。我不知道我在这里错过了什么。我已经尝试了旋转矩阵并且工作正常,点被正确转换。glm::mat4rotate=glm:

C++ 模板 std::vector::iterator 错误

在C++中,我试图获得std::vector::iterator对于我的模板类。但是,当我编译它时,出现错误:errorC2146:syntaxerror:missing';'beforeidentifier'iterator',errorC4430:missingtypespecifier-intassumed.Note:C++doesnotsupportdefault-int.我也收到警告:warningC4346:'std::vector::iterator':dependentnameisnotatype:#includetemplateclassv1{typedefstd::