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

Реализация вектора - C++

Восстановить пароль Регистрация
 
Guy Kawasaki
 Аватар для Guy Kawasaki
2 / 1 / 0
Регистрация: 07.11.2013
Сообщений: 42
04.12.2013, 22:13     Реализация вектора #1
Всем доброго времени суток. Я сегодня уже обращался за помощью к форумчанам, но костыли не дремлют...
Проблема: Есть класс User. Необходимо создать в функции main вектор, содержащий указатели на пользователей. Само по себе это не сложно, НО мозговой штурм окончился на том, что я понятия не имею, как теперь обращаться через указатель в векторе к отдельным полям пользователя. Просьба помочь.
Среда разработки: Code::Blocks 12.11.

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
33
34
35
#ifndef MYSKYPE_H
#define MYSKYPE_H
#include <string>
 
using namespace std;
 
class User
{
private:
        int id, friend_number, ban_number;
        string nickname, password, email;
        User *friend_list, *ban_list;
public:
        User();
        User(int identifier, int numF, int numB, string nick, string pasw, string mail, User *frd, User *ban);
        User(const User &original);
        ~User();
 
        int get_id();
        int get_friend_number();
        int get_ban_number();
        string get_nick();
        string get_pasw();
        string get_mail();
 
        void put_id(int identifier);
        void put_friend_number(int numF);
        void put_ban_number(int numB);
        void put_nick(string name);
        void put_pasw(string psw);
        void put_mail(string mail);
        //void friend_list_null();
        //void ban_list_null();
};
#endif
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include "myskype.h"
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
#include <vector>
 
using namespace std;
 
void show_user_list(User *net, int size) //
{
    cout << "All members of our network:\n\n";
    for(int i = 0; i < size; ++i)
    {
        cout << "Id:" << net[i].get_id() << " ";
        cout << "Nickname:" << net[i].get_nick() << " ";
        cout << "Password:" << net[i].get_pasw() << " ";
        cout << "Email:" << net[i].get_mail() << " ";
        cout << endl << "Friends:" << net[i].get_friend_number() << " ";
        cout << "Ban:" << net[i].get_ban_number() << endl << endl;
    }
}
 
int main()
{
    vector<User> *network[3];
    //User *network;
    //network = new User[3]; //Раньше был массив объектов типа User
 
    User person;
    string line;
    string helper;
    int file_id = 0;
    int file_num_frd = 0;
    int file_num_ban = 0;
    int counter = 0;
    string file_nick;
    string file_pasw;
    string file_mail;
 
    ifstream userfile("user.txt");
    if (userfile.is_open())
    {
        for(int i = 0; !userfile.eof(); ++i)
        {
            getline(userfile, line);
            helper = line;
            helper += " "; 
            getline(userfile, line);
            helper += line;
            helper += " ";
            getline(userfile, line);
            helper += line;
            helper += " ";
            istringstream ist(helper);
            ist >> file_id >> file_num_frd >> file_num_ban;
            ist.clear();
 
            getline(userfile, line);
            file_nick = line;
 
            getline(userfile, line);
            file_pasw = line;
 
            getline(userfile, line);
            file_mail = line;
 
            person.put_id(file_id);
            person.put_nick(file_nick);
            person.put_pasw(file_pasw);
            person.put_mail(file_mail);
            person.put_friend_number(file_num_frd);
            person.put_ban_number(file_num_ban);
 
            network[i].push_back(person); //Да, это глупо
            ++counter;
        }
        userfile.close();
    }
    else cout << "Unable to open file!" << endl;
 
    show_user_list(network, counter); //И передача здесь тоже неправильная
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2013, 22:13     Реализация вектора
Посмотрите здесь:

Дан список, элементы которого являются координатами вектора. Найти длину вектора C++
C++ Переменной R присвоить значение 1, если длина вектора А больше длины вектора В, и значение 0 в противном случае
Заданы три вектора a(n), b(m), c(k). Вывести наименование вектора, в котором максимальна сумма четных элементов, стоящих на нечетных местах C++
Заданный вектор А, состоящий из n элементов. Переставить компоненты вектора, размещенные после самого элемента вектора А C++
Заменить первые два нулевые элементы заданного вектора В на два первых НЕ нулевые элементы этого вектора C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
04.12.2013, 22:22     Реализация вектора #2
Цитата Сообщение от Guy Kawasaki Посмотреть сообщение
C++
24
25
26
27
28
int main() 
{ 
    vector<User> *network[3]; 
    //User *network; 
    //network = new User[3]; //Раньше был массив объектов типа User

C++
vector<User> network(3);
Guy Kawasaki
 Аватар для Guy Kawasaki
2 / 1 / 0
Регистрация: 07.11.2013
Сообщений: 42
04.12.2013, 22:27  [ТС]     Реализация вектора #3
А можно полюбопытствовать, как мне правильно этот вектор передать функции show_user_list() и как мне обращаться к полям класса User?
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
05.12.2013, 00:28     Реализация вектора #4
Guy Kawasaki, примерно вот так:
C++
#include <iostream>
#include <vector>
#include <string.h>
using namespace std;
 
#define MAX_USERS 3
 
class User
{
public:
    char name[256];
};
 
void foo(int id, vector <User> &a) // & - по ссылке, если нужно изменять внешний вектор array
{
    if(id < MAX_USERS && id >= 0) 
        cout << a[id].name << endl; // выводим имя юзера
}
 
int main()
{
    User user[MAX_USERS];
    strcpy(user[0].name, "user_0");
    strcpy(user[1].name, "user_1");
    strcpy(user[2].name, "user_2");
    
    vector <User> array(MAX_USERS);
    array[0] = user[0];
    array[1] = user[1];
    array[2] = user[2];
    
    foo(0, array);
    foo(1, array);
    foo(2, array);
}
Guy Kawasaki
 Аватар для Guy Kawasaki
2 / 1 / 0
Регистрация: 07.11.2013
Сообщений: 42
05.12.2013, 15:01  [ТС]     Реализация вектора #5
Спасибо большое. Не успел вчера поблагодарить, ИБО вышел трафик.
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
05.12.2013, 15:17     Реализация вектора #6
Цитата Сообщение от Guy Kawasaki Посмотреть сообщение
Спасибо большое
Пожалуйста
Yandex
Объявления
05.12.2013, 15:17     Реализация вектора
Ответ Создать тему
Опции темы

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