Форум программистов, компьютерный форум CyberForum.ru

Как вывести vector своего типа? - C++

Восстановить пароль Регистрация
 
Tetradon
0 / 0 / 0
Регистрация: 29.12.2015
Сообщений: 12
22.01.2016, 15:48     Как вывести vector своего типа? #1
Суть вот в чем, допустим нужно создать класс Name_value, который хранит строку и число, занести все это дело в вектор так, чтоб получился такой вектор типа vector<Name_value>list.
Вот моя попытка, но ругается компилятор на выводе вектора. Нашел, что дело в перегрузке, но не нашел, как решить эту проблему.
P.S. Заранее извините за, возможно, глупый вопрос, но все же помогите пожалуйста разобраться глупому человеку, решившему изучать программирование.
C++
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
#include "std_lib_facilities.h"
using namespace std;
 
class Name_value{
public:
    string name;
    int score;
    Name_value(string n,int s)
        :name(n),score(s){}
};
void main(){
vector<Name_value>list;
    string name,tempN;
    int score,tempS;
    
    cout<<"Enter name and score"<<endl;
    while(cin>>tempN>>tempS){
        if (tempN=="No more")break;
        list.push_back(Name_value(tempN,tempS));
    }
        
        for(int i=0;i<list.size();i++)
            cout>>list[i]>>endl;
    
    system("pause");
}
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11800 / 6779 / 765
Регистрация: 27.09.2012
Сообщений: 16,829
Записей в блоге: 2
Завершенные тесты: 1
22.01.2016, 16:01     Как вывести vector своего типа? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
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
32
class Name_value{
public:
    string name;
    int score;
    Name_value(string n,int s)
        :name(n),score(s){}
};
 
 
 
std::ostream& operator<<(std::ostream& stream, const Name_value& obj)
{
    return stream << obj.name << " : " << obj.score ;
}
 
 
int main(){
vector<Name_value>list;
    string name,tempN;
    int score,tempS;
    
    cout<<"Enter name and score"<<endl;
    while(cin>>tempN>>tempS){
        if (tempN=="No more")break;
        list.push_back(Name_value(tempN,tempS));
    }
        
        for(int i=0;i<list.size();i++)
            cout<<list[i]<<endl;
    
    system("pause");
}
Tetradon
0 / 0 / 0
Регистрация: 29.12.2015
Сообщений: 12
22.01.2016, 16:14  [ТС]     Как вывести vector своего типа? #3
Спасибо большое, работает!
Только я не понимаю объявление этой функции(или что это)...
C++
1
std::ostream& operator<<(std::ostream& stream, const Name_value& obj)
что такое ostream& operator да и в скобках тоже.
Если кто-то объяснит буду очень благодарен.
rikimaru2013
C++ Game Dev
 Аватар для rikimaru2013
2133 / 966 / 222
Регистрация: 30.11.2013
Сообщений: 3,223
22.01.2016, 16:18     Как вывести vector своего типа? #4
Croessmah, минуты 3 всматривался как без объявления дружбы код работает - и потом до меня дошло ...
GbaLog-
Не Эксперт C++
1428 / 614 / 172
Регистрация: 24.08.2014
Сообщений: 2,486
Записей в блоге: 1
Завершенные тесты: 2
22.01.2016, 17:35     Как вывести vector своего типа? #5
Tetradon,
что такое ostream& operator да и в скобках тоже.
ostream - это стандартный поток вывода.
А operator<< это перегрузка оператора вывода, можете в гугле найти всю нужную информацию по операторам ввода/вывода/сложения/etc.
Yandex
Объявления
22.01.2016, 17:35     Как вывести vector своего типа?
Ответ Создать тему
Опции темы

Текущее время: 06:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru