[英]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.