Ошибка при печати элементов вектора

В следующем коде у меня есть 2D вектор, в каждом индексе вектора каждая пара содержит in t и string. Я пытаюсь получить доступ к каждому элементу после получения значений в векторе. Предложения будут очень благодарны.

 #include <bits/stdc++.h>
 using namespace std;
 vector<pair<int,string>> aye[101];

int main()
{ int n,m,i,a,b;
  string x;
cin >> n >> m;
for (int i = 1; i <= n; ++i)
{
    cin >> x;
    cin >> a >> b;
    aye[a].push_back(make_pair(-b,x));
    cout<<aye[a].first<<aye[a].second;//this is not working
    cout<<aye[a][0]<<aye[a][1]<<endl;//this is not working

 }
}

2 ответа

Решение

Вы, кажется, смущены своей структурой двухмерного массива (я должен признать, я также немного смущен, почему вы используете что-то подобное). Это:

aye[a]

Является ли (a+1) -й элемент массива, который является вектором, то

aye[a][i]

(i+1) -й элемент в этом векторе, который является парой и

aye[a][i].first
aye[a][i].second

первые / вторые записи этой пары, соответственно.

Однако у меня есть сомнения, что вам действительно нужен массив векторов пар, тем более что вы, похоже, игнорируете одно из измерений в остальной части кода.

Вы, кажется, пытаетесь напечатать элемент, который вы только что добавили в vector для этого я бы предложил использовать vector::back, Вы можете заменить две неработающие строки чем-то вроде этого:

cout << aye[a].back().first << ' ' << aye[a].back().second;

Живой пример


Независимо от вашего намерения с этой структурой, введенные значения a представляют угрозу для вашего дизайна:

  1. Там нет проверки, чтобы увидеть, что твое падение между 0 и 100
  2. Вы выделяете 101 элемент, даже не зная, n Который означает, что 101 - n из этих элементов впустую.

В этой ситуации я считаю, используя map для вашего первого измерения был бы гораздо лучший план; так что ваша структура будет выглядеть так:

map<int, vector<pair<int, string>>> aye;

Никаких дополнительных изменений в вашем коде не потребуется, но вы должны выделить только nvector<pair<int, string>> с ли n был больше или меньше 101.

Другие вопросы по тегам