Печать вектора пары в C ++ - PullRequest
0 голосов
/ 27 мая 2020

Вот код для печати значения в векторе пары

Но почему он печатает вывод, упомянутый ниже ..?

   #include<bits/stdc++.h>
   using namespace std; 
   int main()
   {
      vector<pair<int,int>>vec(3,pair<int,int>()); // declaring the vector of pair.
      for(auto x: vec)
        x=make_pair(1,2);                          // looping through it to insert values
      for(auto x:vec)
        cout<<x.first<<" "<<x.second<<endl;        // printing it

      return 0;
   }

Вывод:

0 0 
0 0
0 0    

Ожидается:

1 2
1 2
1 2

1 Ответ

0 голосов
/ 23 июня 2020

В вашем первом for-l oop вы перебираете свой вектор «по значению», что означает, что вы копируете элементы в auto x, а затем устанавливаете x в {1,2}, это не меняет ваш исходный вектор. Чтобы действительно изменить свой вектор, вы должны пройти его по ссылке:

for(auto& x: vec)
  x=make_pair(1,2);
...