草庐IT

vector_c

全部标签

c++ - 在 C++ 中将 vector 解包为函数参数的任何解决方案?

我实际上在想类似于python中的“*”运算符的东西:args=[1,2,4]f(*args)C++有没有类似的解决方案?我能想到的如下:templatestructunpack_caller;templatestructunpack_caller{voidoperator()(FuncType&f,std::vector&args){f(args[0],args[1],args[3])}};以上我假设只有int参数类型。问题是我觉得为num_args的不同值编写unpack_caller的所有特化很麻烦。有什么好的解决办法吗?谢谢。 最佳答案

c++ - 对 C++ 中函数返回的 vector 元素的引用

谁能验证下是不是BUG,并说明原因?我想我知道,但不清楚细节。(我的实际问题涉及枚举vector,而不是整数,但我认为这无关紧要。)假设我有以下代码:std::vectorf(void){std::vectorv;v.push_back(5);returnv;}voidg(void){constint&myIntRef=f()[0];std::coutmyIntRef立即是一个悬空引用,我是否正确,因为f的返回值没有保存在堆栈中的任何地方?另外,下面是一个有效的修复,还是仍然是一个错误?constintmyIntCopy=f()[0];//copy,notareference也就是说,

c++ - 在 2D std::vector 中移动行/列的最有效方法

我正在用C++创建游戏应用程序。我将map表示为Tile对象的二维std::vector。我需要在玩家移动时更新map。从服务器应用程序中,我得到带有全局map新部分的行或列,它应该放在本地客户端的map中,例如:在图1中,玩家移动之前有一张局部map。顶行填充对象1,中心填充2,底部填充0。现在当玩家向上移动时,我得到新的顶行填充对象3,所有其他的都应该下降,之前的底行应该消失。我可以通过在for循环中移动所需的对象来做到这一点,但我在想是否标准库中已经有某种算法或者许多人更喜欢这种算法来实现这种修改.编辑:抱歉,我没有意识到对行和列执行此操作会有区别,但确实存在区别。所以我也编辑了

c++ - 我可以从它包含的数据中分离一个 std::vector<char> 吗?

我正在使用一个函数生成一些数据作为std::vector和另一个处理数据并接受constchar*,size_tlen的函数(想想遗留API).有什么方法可以从vector中分离数据,以便vector可以在调用处理函数之前超出范围without复制vector中包含的数据(这就是我用分离)。一些代码草图来说明场景://Generatesdatastd::vectorgenerateSomeData();//LegacyAPIfunctionwhichconsumesdatavoidprocessData(constchar*buf,size_tlen);voidf(){char*buf

c++ - 从子类的STL vector 到基类 vector 的转换

我想知道是否可以将派生类值的vector转换为基类值的vector。具体来说,我希望能够将基类对象的vector传递给其形式参数采用基类vector的函数。它似乎不可能直接作为以下代码示例产生错误(使用g++):#includeclassA{};classB:publicA{};voidfunction(std::vectorobjs){}intmain(intargc,char**argv){std::vectorobjs_b;objs_b.push_back(B());function(objs_b);}test.cc:16:error:conversionfrom‘std::ve

c++ - 将指针 push_back 到指针 vector 中是内存泄漏吗?

在我的类中,我有一个成员变量std::vectorchildren下面的类成员函数会造成内存泄漏吗?//addsachildnode{node*child=newnode("blah","blah","blah");child->Set_Parent(this);children.push_back(child);//vector复制了一个指针,我有两个指向同一内存的指针,然后原始指针超出范围,对吗?这可能简单明了,但我只想确认我的假设。谢谢 最佳答案 这不是泄漏……还不是。但是,如果vector超出范围,或者你erase,pop_

c++ - 多个 C++ 文件之间的共享 vector 变量

我想在两个cpp文件(A.cpp和B.cpp)之间共享(全局化)一些vector变量(V1和V2)。我已经通过以下命令在A.h中定义了V1和V2。externvectorV1;externvectorV2;我还在A.cpp和B.CPP文件中添加了#include"A.h"。谁能告诉我我还应该做什么才能访问这两个CPP文件中的V1和V2元素?提前致谢 最佳答案 首先,您需要选择应该定义vector的位置。假设您选择A.cpp。在A.cpp中(仅在一个文件中-在多个文件中定义相同的对象将产生多个定义的符号错误)定义vector作为全局变

c++ - 如何计算 Eigen 中 vector 的绝对值?

如何计算Eigen中vector的绝对值?由于显而易见的方式Eigen::VectorXfv(-1.0,-1.0,-1.0,-1.0,-1.0,-1.0,-1.0);v.abs();//Computeabsvalue.不起作用。 最佳答案 对于Eigen3.2.1,使用p.abs();的方式与使用p.normalize的方式相同,会导致编译器错误error:nomembernamed'abs'in'Eigen::Matrix'p.abs();~^所以Eigen中的vector只不过是一种矩阵类型。要计算Eigen中矩阵的绝对值,可以

C++03 通过构造函数将 vector move 到类成员中( move 语义)

我只能访问C++03,而且我经常想像在C++11中那样将vectormove到函数中。如何做到这一点的问题不会过多地混淆代码的用户。所以我的问题是在C++11之前程序员是如何做到的。我知道可以使用交换函数“move”vector。所以这就是我想出的:classFoo{public:Foo(std::vector&vec){usingstd::swap;swap(vec,m_vec);//"move"vecintomembervector}private:std::vectorm_vec;};//usage:std::vectorv(100,1337);Foofoo(v);//v.emp

c++ - 将函数放入 vector 并执行

我想制作一个vector/deque作为函数容器。这个容器必须接受带有不同参数的不同函数。示例函数:program_data::getInstance().function(int,std::string);program_data::getInstance().foo(int);program_data::getInstance().exam(int,std::string,double);您能否展示示例代码如何放置这些带有参数的函数到std::vector/std::deque并执行?我认为我应该使用std::function和std::bind但我不知道如何支持具有不同参数大小的