gpt4 book ai didi

c++ - 如何将一个 vector 传递给另一个 vector 推回? (无需创建额外的变量来传递)

转载 作者:行者123 更新时间:2023-11-27 23:19:16 27 4
gpt4 key购买 nike

好吧,我在问自己是否有办法直接在参数中传递 vector ,我的意思是,像这样:

int xPOS = 5, yPOS = 6, zPOS = 2;
//^this is actually a struct but
//I simplified the code to this

std::vector <std::vector<int>> NodePoints;
NodePoints.push_back(
std::vector<int> {xPOS,yPOS,zPOS}
);

这段代码当然会出错;类型名不允许,需要 ')'

我会使用一个结构,但我必须将数据传递给一个抽象虚拟机,在那里我需要以 Array[index][index] 的形式访问节点位置,例如:

public GPS_WhenRouteIsCalculated(...)
{
for(new i = 0; i < amount_of_nodes; ++i)
{
printf("Point(%d)=NodeID(%d), Position(X;Y;Z):{%f;%f;%f}",i,node_id_array[i],NodePosition[i][0],NodePosition[i][1],NodePosition[i][2]);
}
return 1;
}

当然我可以这样做:

std::vector <std::vector<int>>  NodePoints;//global
std::vector<int> x;//local
x.push_back(xPOS);
x.push_back(yPOS);
x.push_back(zPOS);
NodePoints.push_back(x);

或者这个:

std::vector <std::vector<int>>  NodePoints;//global
std::vector<int> x;//global
x.push_back(xPOS);
x.push_back(yPOS);
x.push_back(zPOS);
NodePoints.push_back(x);
x.clear()

但我想知道两者中哪一个会更快/更高效/更好?或者有没有办法让我的初始代码正常工作(第一个片段)?

最佳答案

为此使用 C++11,或来自 boost 的东西(你也可以使用简单的 v.push_back({1,2,3}),vector 将从 initializer_list 构造)。

http://liveworkspace.org/code/m4kRJ $0

如果你没有 C++11,你也可以使用 boost::assign。

#include <vector>
#include <boost/assign/list_of.hpp>

using namespace boost::assign;

int main()
{
std::vector<std::vector<int>> v;
v.push_back(list_of(1)(2)(3));
}

http://liveworkspace.org/code/m4kRJ $5

当然你也可以使用旧版本

int ptr[1,2,3];
v.push_back(std::vector<int>(ptr, ptr + sizeof(ptr) / sizeof(*ptr));

关于c++ - 如何将一个 vector 传递给另一个 vector 推回? (无需创建额外的变量来传递),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14519243/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com