在向量中的相同位置插入多个元素
Inserting multiple elements at same position in a vector
这是在C++中使用向量表示邻接表的代码(来自geeksforgeeks)。
// A utility function to add an edge in an
// undirected graph.
void addEdge(vector<int> adj[], int u, int v)
{
adj[u].push_back(v);
adj[v].push_back(u);
}
// A utility function to print the adjacency list
// representation of graph
void printGraph(vector<int> adj[], int V)
{
for (int v = 0; v < V; ++v)
{
cout << "\n Adjacency list of vertex "
<< v << "\n head ";
for (auto x : adj[v])
cout << "-> " << x;
printf("\n");
}
}
// Driver code
int main()
{
int V = 5;
vector<int> adj[V];
addEdge(adj, 0, 1);
addEdge(adj, 0, 4);
addEdge(adj, 1, 2);
addEdge(adj, 1, 3);
addEdge(adj, 1, 4);
addEdge(adj, 2, 3);
addEdge(adj, 3, 4);
printGraph(adj, V);
return 0;
}
addEdge(adj,0,1) 和 addEdge(adj,0,4) push_back 值 1 和 4 在位置 0。所以我的问题是我们可以在同一位置插入两个或更多值在向量中?当多个值插入到该位置时,它是否会在 vector 的特定位置创建某种链表?如果没有,请有人解释一下上面代码的工作原理。
So my question is can we insert two or more values at same position in vector
不,我们不能。向量在每个索引中只包含一个元素。不再;不少于。就像数组一样。
Does it create some sort of linked list
没有。 Vector是使用动态数组实现的;不是链表。
can please someone explain the working of above code.
vector<int> adj[V]
是向量数组。每个向量表示由存储向量的索引标识的顶点的邻接列表,并且每个向量都可以包含多个元素。
您可以使用嵌套 vector
在一个位置插入多个值。
声明vector< vector<int> > adj[V];
现在要在位置 0 插入一个值,您可以像这样使用
void addEdge(vector<int> adj[], int u, int v, int val)
{
adj[u][v].push_back(val);
adj[v][u].push_back(val);
}
添加元素
addEdge(adj, 0, 0, 1); // insert 1 at position (0,0)
请记住,在添加元素之前,您需要在每个 index
初始化 vector
。
但是您不能在向量中的相同位置插入两个或更多值。
这是在C++中使用向量表示邻接表的代码(来自geeksforgeeks)。
// A utility function to add an edge in an
// undirected graph.
void addEdge(vector<int> adj[], int u, int v)
{
adj[u].push_back(v);
adj[v].push_back(u);
}
// A utility function to print the adjacency list
// representation of graph
void printGraph(vector<int> adj[], int V)
{
for (int v = 0; v < V; ++v)
{
cout << "\n Adjacency list of vertex "
<< v << "\n head ";
for (auto x : adj[v])
cout << "-> " << x;
printf("\n");
}
}
// Driver code
int main()
{
int V = 5;
vector<int> adj[V];
addEdge(adj, 0, 1);
addEdge(adj, 0, 4);
addEdge(adj, 1, 2);
addEdge(adj, 1, 3);
addEdge(adj, 1, 4);
addEdge(adj, 2, 3);
addEdge(adj, 3, 4);
printGraph(adj, V);
return 0;
}
addEdge(adj,0,1) 和 addEdge(adj,0,4) push_back 值 1 和 4 在位置 0。所以我的问题是我们可以在同一位置插入两个或更多值在向量中?当多个值插入到该位置时,它是否会在 vector 的特定位置创建某种链表?如果没有,请有人解释一下上面代码的工作原理。
So my question is can we insert two or more values at same position in vector
不,我们不能。向量在每个索引中只包含一个元素。不再;不少于。就像数组一样。
Does it create some sort of linked list
没有。 Vector是使用动态数组实现的;不是链表。
can please someone explain the working of above code.
vector<int> adj[V]
是向量数组。每个向量表示由存储向量的索引标识的顶点的邻接列表,并且每个向量都可以包含多个元素。
您可以使用嵌套 vector
在一个位置插入多个值。
声明vector< vector<int> > adj[V];
现在要在位置 0 插入一个值,您可以像这样使用
void addEdge(vector<int> adj[], int u, int v, int val)
{
adj[u][v].push_back(val);
adj[v][u].push_back(val);
}
添加元素
addEdge(adj, 0, 0, 1); // insert 1 at position (0,0)
请记住,在添加元素之前,您需要在每个 index
初始化 vector
。
但是您不能在向量中的相同位置插入两个或更多值。