[英]Inserting multiple elements at same position in a vector
這是使用C ++中的vector表示鄰接列表的代碼(來自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)都在位置0處push_back值1和4。所以我的問題是我們可以在向量的相同位置插入兩個或多個值嗎? 當在一個向量的特定位置插入多個值時,是否會在該位置創建某種鏈表? 如果沒有,請有人解釋以上代碼的工作原理。
所以我的問題是我們可以在向量的相同位置插入兩個或多個值嗎
不,我們不能。 向量在每個索引中僅包含一個元素。 不再; 不少。 就像數組一樣。
它是否創建某種鏈表
向量是使用動態數組實現的; 不是鏈表。
可以請別人解釋以上代碼的工作原理。
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
。
但是您不能在向量的相同位置插入兩個或多個值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.