簡體   English   中英

如何將一對插入向量的特定 position 中?

[英]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 ,假設piqi在范圍內:

adj[pi].push_back(make_pair(qi, ri));
adj[qi].push_back(make_pair(pi, ri));

上面將數據添加到鄰接矩陣的piqi行。

或者,如果您使用的是 C++11 兼容編譯器,則可以這樣做:

adj[pi].push_back({qi, ri});
adj[qi].push_back({pi, ri});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM