Я хочу определить массив векторов в c ++.Обычно я могу сделать это так:
vector <pair<int,int> > G[100];
У меня есть функция, которая читает данные из файла.
Моя первая проблема заключается в том, что я хочу определить G
с размером V
, который читает из файла, а G
должен определять в main, но вызывать функцию с неинициализированным указателемне может работать.
Моя вторая проблема - это когда я определяю G
следующим образом:
vector <pair<int, int> > *G;
G = new vector <pair<int, int>>[10];
он не читает данные правильно (он не 'работает некорректно).
Вот мой код:
void readData(vector <pair<int, int> > *G)
{
int V, E;
ifstream file("input.txt");
file >> V >> E;
//G = new vector <pair<int, int>>[V]; //my problem
for (int i = 0; i < E; i++)
{
int u, v, w;
file >> u >> v >> w;
G[u - 1].push_back(make_pair(v - 1, w));
G[v - 1].push_back(make_pair(u - 1, w));
}
file.close();
}
int main() {
vector <pair<int, int> > *G;
G = new vector <pair<int, int>>[10]; // my problem
MST = new vector <pair<int, int>>;
readData(G);
}
Пример данных:
5 6
1 3 4
1 2 3
2 4 6
4 3 5
4 5 20
5 2 21
, и этот код работает правильно и считывает данные из консоли:
const int N=10;
vector <pair<int,int> > G[N];
int main() {
cin >> V>>E;
for(int i=0; i<E; i++){
int u,v,w;
cin >>u>>v>>w;
G[u-1].push_back(make_pair(v-1,w));
G[v-1].push_back(make_pair(u-1,w));
}
}