gpt4 book ai didi

c++ - 对 Vector 元素的 push_back 操作 (C++)

转载 作者:行者123 更新时间:2023-12-02 02:33:06 25 4
gpt4 key购买 nike

我是一名 Python 程序员,正在努力提高 C++ 能力。我有一个关于 vector 的愚蠢问题。

假设我有一个像这样的 vector

vector<int> adj;

假设它包含一些值。这个操作有什么作用?

adj[v].push_back(w)

它会创建 vector 的 vector 吗?这与拥有一个有什么不同,

vector<vector<int>> adj

首先?

编辑::相关代码是图上的简单 BFS,可以完美编译和运行。

class Graph 
{
int V;
vector<int> *adj;
public:
Graph(int V);
void addEdge(int v, int w);
void BFS(int s);
};

Graph::Graph(int V)
{
this->V = V;
adj = new vector<int>[V];
}

void Graph::addEdge(int v, int w)
{
adj[v].push_back(w); // Add w to v’s list.
}

BFS函数位于GeeksForGeeks

最佳答案

假设vector<int> adj :

adj[v].push_back(w)将调用 operator[]在 adj 上,这将返回 int & (假设 v 是某个标量)。然后它会尝试调用push_backint &上这将无法编译。

假设vector<vector<int>> adj :

adj[v].push_back(w)将调用 operator[]在 adj 上,这将返回 vector<int> & (假设 v 是某个标量)。然后它会调用push_back在那vector<int> & ,附加值 w到那个特定的 vector 。

关于c++ - 对 Vector 元素的 push_back 操作 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62028293/

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