将元素插入2D矢量

6 c++ vector adjacency-list

所以我正在创建一个实现邻接列表的类.目前在我的类定义中我初始化了两个向量:

vector<vector<int>> adjList;
vector<int> neighbors;
Run Code Online (Sandbox Code Playgroud)

我宣布了两个我计划用来制作的功能:

bool constructAdjList();
bool insertIntoAdjList(int, int);
Run Code Online (Sandbox Code Playgroud)

围绕2D矢量缠绕我的头部变得越来越困难.我知道它本质上是一个向量的向量,但我对如何将一个新值插入其中一个"子向量"感到困惑.例如,我能够在createAdjList中创建一个空的邻接列表,其中包含以下循环:

for (int i = 0; i < numOfValues; i++){
    neighbors.push_back(0);
    adjList.push_back(neighbors);
    neighbors.clear();
}
Run Code Online (Sandbox Code Playgroud)

但是我怎么说,将值5推送到adjList中的第4个向量,这将在我的insertIntoAdjList函数中表示为

insertIntoAdjList(4, 5);
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过说adjList [4] [1]来访问2D向量中的特定值,但是如何将其推入它?

谢谢!

Kam*_*Kam 12

要推动作为另一个向量的元素的向量,您只需执行此操作

adjList[x].push_back();
Run Code Online (Sandbox Code Playgroud)

  • @Mardo我认为理解这一点很重要,`adjList [x]`返回对存储在位置`x`的向量的引用.所以,`adjList [x] [y]`与`(adjList [x])[y]`相同,意思是:首先,给我一个对`adjList`中位置`x`的向量的引用(让我们调用)它V),然后给我一个在V.的位置`y`的整数的引用. (4认同)

小智 5

如果最初向量中没有任何值 - 您可以将值推入一个向量,然后将该向量推入 2D 向量。例如:

  vector< vector<int> > vt1;
  vector<int> vt2;

  vt2.push_back(value);
  vt1.push_back(vt2);
Run Code Online (Sandbox Code Playgroud)

如果你的向量已经填充然后 -

vt1[index].push_back(value);
Run Code Online (Sandbox Code Playgroud)