以下语句是否构成2D矢量?
如果有的话,还要提到矢量的尺寸。还有另一种声明全局2D矢量的方法吗?
说明:
var client = clients.pop();
client.end(//some data here));
以上陈述已用于声明图表的全局邻接矩阵。
似乎你们中的很多人都不清楚这个问题。我想使用向量声明一个全局邻接列表,这样我可以在图形中直接添加边缘,如v [a] .push_back(b)。为此,我必须指定向量的第一维,同时在执行main之前声明我没有的向量。
答案 0 :(得分:2)
不,但它给出了类似的行为。所以你创建的是一个指向矢量数组的指针。所以你最终会得到这个:
adj[0] = []
adj[1] = []
...
adj[number_nodes] = []
并且执行push_back
是添加到向量的合法方式:
adj[0].push_back(some_num) --> adj[0] = [some_num]
但这是一种可怕的方法来解决这个问题!为什么?
std::vector
功能。您已经可以看到std::vector
可以用作1D矩阵。所以使用2个向量:
std::vector<std::vector<int>> Matrix2D;
如果您需要某个尺寸的初始尺寸,那么您可以这样做:
std::vector<std::vector<int>> Matrix2D(number_of_nodes, std::vector<int>());
或者这个:
Matrix2D.resize(number_of_nodes);
或者,如果在编译时修复了该大小,那么您甚至可以这样做:
const int number_of_nodes = 10;
std::array<std::vector<int>, number_of_nodes> Matrix2D;
或者进一步扩大并获得像Eigen.
这样的Matrix使用库