C ++: распечатывать векторные элементы в контейнере набора - PullRequest
0 голосов
/ 08 мая 2018

Я хочу распечатать векторный элемент в заданном контейнере. Я сделал код следующим образом:

int main() {
  vector<int> aa = {3, 2, 1, 1};
  vector<int> bb = {5, 1, 7, 9};

  set<vector<int>> myset; // setVector

  myset.insert(aa);
  myset.insert(bb);

  for (auto elem : myset) {
    cout << elem << ", ";
  }
  return 0;
}

Однако этот код не может распечатать вектор: (3, 2, 1, 1) и (5, 1, 7, 9).

Ответы [ 3 ]

0 голосов
/ 08 мая 2018

Вы также должны зациклить свои vector элементы внутри myset.

for (auto const &elem : myset) {    // loop set elements
   for (auto const &v: elem) {      // loop vector elements
      std::cout << v << ", ";       // print each vector element
   }
   std::cout << std::endl;
}
0 голосов
/ 08 мая 2018

Для того, чтобы распечатать, что вы пытались. Вы должны перегрузить << оператор. </p>

Также вы можете использовать вот так.

for (auto elem : myset) {
  cout << "("; 
  for(auto item:elem)
   {
       cout << item << ",";
   }
   cout << ")"; 
   cout << endl;   
}
0 голосов
/ 08 мая 2018

auto elem: myset здесь elem относится к vectors.

чтобы распечатать содержимое векторов, сделайте следующее:

 for (auto elem : myset)
 {
      for(auto x:elem) // elem is each vector
      {
           std::cout << x << " ";
      }
       std::cout << std::endl;   
  }

Здесь вы перебираете vectors во внутреннем for loop. Кроме того, вы можете захотеть использовать auto& в цикле, если вы обновляете элементы или предотвращаете копирование с тех пор, как получите ссылку.

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