草庐IT

vector_tostr

全部标签

c++ - 在 C++ 中可以使用构造函数将 2D Vector 初始化为单行吗?

像这样初始化2Dvector可以吗(这里5x42Dvectro中的所有值都初始化为3)?std::vector>foo(5,std::vector(4,3));这似乎没有问题,但我在网上看到的每个地方似乎都建议使用for循环和push_back()来初始化这样一个vector。我最初担心这里的所有行都会指向同一个vector,但事实并非如此。我错过了什么吗? 最佳答案 这是完全有效的-您将获得一个二维vector([5,4]个元素),每个元素都初始化为3。对于大多数其他情况(例如,您想要在不同的元素中使用不同的值),您不能使用任何单

c++ - Boost uBLAS 矩阵/vector 积

有人可以提供一个例子说明如何使用uBLAS产品来乘法吗?或者,如果有更好的C++矩阵库,您可以推荐我也欢迎。这正在变成一个令人头疼的问题。这是我的代码:vectormyVec(scalar_vector(3));matrixmyMat(scalar_matrix(3,3,1));matrixtemp=prod(myVec,myMat);这是错误:cannotconvertfrom'boost::numeric::ublas::matrix_vector_binary1'to'boost::numeric::ublas::matrix'我已经用尽了我的搜索。Stackoverflow对此

c++ - 在 C++ 中手动排序 vector<int>

我目前正在研究Vectors在C++中的工作原理。我已经阅读并很好地理解了它们的功能。我正在研究对具有10,000个整数的vector对象进行排序的不同方法,我使用了std::sort方法和shell排序。我注意到对vector进行shell排序比对简单的C样式数组进行排序要慢。我了解到这是因为“不支持在容器中间快速插入或移除元素”(http://www.cppreference.com/wiki/container/vector/start)。所以很明显,具有大量随机访问的shell排序会非常慢。我想知道在任何人的经验中,对于具有10,000个整数的vector,更好的手动排序方法是

c++ - 使用 std::vector 或数组初始化 boost 矩阵

我有一个方法将std::vector作为其参数之一。有没有一种方法可以通过将std::vector分配给矩阵来初始化矩阵?这是我在下面尝试做的事情。有谁知道我如何实现将vector(甚至double指针)分配给矩阵?提前致谢。迈克voidFoo(std::vectorv){matrixm(m,n,v);//workwithmatrix...} 最佳答案 这是如何做到这一点的另一个例子:#include#include#include#include#includenamespaceublas=boost::numeric::ubla

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_