[英]How do I insert a pair into a specific position of vector?
我正在嘗試使用對和向量為樹制作鄰接列表。 但是,我在嘗試實現它時遇到了一些問題。 這是我想要完成的可視化 - 對的向量。
這是我當前的代碼,基於這里的解決方案
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
const int MAXN = 5000;
//Define main variables
int N, Q, pi, qi, ri;
vector<pair<int, int>> adj[MAXN];
int main(){
//Read Input
ifstream fin("mootube.in");
ofstream fout("mootube.out");
fin >> N >> Q;
for(int i=0; i<N; i++){
fin >> pi >> qi >> ri;
pi--;qi--;
adj[pi].insert(make_pair(qi, ri));
adj[qi].insert(make_pair(pi, ri));
}
return 0;
}
在聲明了最大空間為 5000 的向量adj
之后,我正在迭代一些輸入以構造鄰接表。 我相信我面臨的問題是如何將對插入向量中。
當我嘗試上面的代碼時,我遇到了一個錯誤,上面寫着
error: request for member 'size' in 'adj', which is of non-class type 'std::vector<std::pair<int, int> > [5000]'
我也試過
adj.insert(adj.begin() + pi, make_pair(qi, ri));
adj.insert(adj.begin() + qi, make_pair(pi, ri));
很快遇到以下錯誤 -
error: request for member 'size' in 'adj', which is of non-class type
任何幫助,將不勝感激。
首先,將您的插圖分解為易於處理的組件:
using prtype = std::pair<int, int>;
using vectPairs = std::vector<prtype>;
現在你想要一個上面的向量來表示鄰接矩陣:
using adjacencyType = std::vector<vectPairs>;
現在您要創建 5000 行的鄰接矩陣;
adjacencyType adj(5000);
然后在main
function 中,您調用push_back
,假設pi
和qi
在范圍內:
adj[pi].push_back(make_pair(qi, ri));
adj[qi].push_back(make_pair(pi, ri));
上面將數據添加到鄰接矩陣的pi
和qi
行。
或者,如果您使用的是 C++11 兼容編譯器,則可以這樣做:
adj[pi].push_back({qi, ri});
adj[qi].push_back({pi, ri});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.