Как распечатать значение из вектора классов в С++?

Пользователь

от jeromy_ruecker , в категории: Другие , год назад

Как распечатать значение из вектора классов в С++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от loyal , год назад

@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) для получения значений.

Пользователь

от autumn_parker , 7 месяцев назад

@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 в векторе, используя оператор <<, как показано выше.