0
在這個程序中,我在標記的線路上出現錯誤。stl庫:我是新來stl庫和麪臨編譯錯誤
我是新來的stl庫,因此無法理解它。 在下面的代碼我想使用向量和列表的STL庫,並試圖使鄰接表
#include "stdafx.h"
#include<iostream>
#include<stdio.h>
#include<vector>
#include<list>
using namespace std;
void add_vertex(vector< list<int> > *adjlist)
{
adjlist->push_back(list<int>());//adding vertex
}
void add_edge(vector< list<int> > *adjlist,int x,int y)
{
adjlist[x].push_back(y); //adding edge
// ^^^^ some error here ^^^^
}
int main(int argc, char* argv[])
{
int t,n,i,j;
int s[500],d[500];
int max =0,tmpl;
//int vertex[500] ={0,};
vector< list<int> > adjlist;//adjacency list
scanf("%d",&t);
for(i=0;i<t;i++)
{
scanf("%d",&n);
for(j =0;j<n;j++)
{
scanf("%d %d",&s[j],&d[j]);
tmpl = (s[j]>d[j])?s[j]:d[j];
if(max < tmpl)
max = tmpl;
}
for(j =0;j<max;j++)
{
add_vertex(&adjlist);
}
for(j=0;j<n;j++)
{
add_edge(&adjlist,s[j],d[j]);//adding edge into the list
}
}
return 0;
}
除非您告訴我們**錯誤是什麼**我們將很難告訴您如何解決這個問題 –
沒有大膽的線條。我猜大膽的標記在複製和粘貼過程中丟失了。 – usr1234567
不是傳遞指針,而是在你的函數中傳遞對'adjlist'的引用。 – rubenvb