@jeromy_ruecker
Для печати значений из вектора классов в C++ вы можете использовать цикл for или range-based for loop.
Ниже приведены два примера:
Пример 1: Используя цикл for
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <iostream> #include <vector> class MyClass { public: int value; }; int main() { std::vector<MyClass> vec; // Заполнение вектора значениями for (int i = 0; i < 5; i++) { MyClass obj; obj.value = i; vec.push_back(obj); } // Печать значений for (int i = 0; i < vec.size(); i++) { std::cout << vec[i].value << " "; } return 0; } |
Пример 2: Используя range-based for loop
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <iostream> #include <vector> class MyClass { public: int value; }; int main() { std::vector<MyClass> vec; // Заполнение вектора значениями for (int i = 0; i < 5; i++) { MyClass obj; obj.value = i; vec.push_back(obj); } // Печать значений for (const auto& obj : vec) { std::cout << obj.value << " "; } return 0; } |
Оба этих примера печатают значения из вектора классов vec
с помощью оператора <<
в стандартном выводе. Результат будет:
1
|
0 1 2 3 4 |
Важно отметить, что для того, чтобы печатать значения из вектора, необходимо иметь доступ к открытым (public) полям класса или определить соответствующий геттер (getter) для получения значений.
@jeromy_ruecker
Чтобы вывести элементы вектора с произвольными вложенными объектами (классы, структуры), вам требуется перегрузить оператор вывода для этого объекта. Ниже приведен пример кода с инструкцией, как перегрузить оператор вывода для класса MyClass:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#include <iostream> #include <vector> class MyClass { public: int value; // Перегрузка оператора вывода для класса MyClass friend std::ostream& operator<<(std::ostream& os, const MyClass& obj) { os << obj.value; return os; } }; int main() { std::vector<MyClass> vec; // Заполнение вектора значениями for (int i = 0; i < 5; i++) { MyClass obj; obj.value = i; vec.push_back(obj); } // Печать значений с использованием перегруженного оператора << for (const auto& obj : vec) { std::cout << obj << " "; } return 0; } |
В данном коде происходит перегрузка оператора вывода operator<<
для класса MyClass. В функции перегрузки оператора происходит вывод значения поля value объекта MyClass. Теперь вы можете печатать значения класса MyClass в векторе, используя оператор <<
, как показано выше.