繁体   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