Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 20.11.2019
Сообщений: 46
1

std::map или std::vector?

04.11.2020, 22:49. Показов 1023. Ответов 5

Author24 — интернет-сервис помощи студентам
Здравствуйте. У меня есть 3 класса: клиенты банка, клиент, счёт.

У класса Клиенты лишь одно поле - контейнер с экземплярами класса Клиент. У каждого Клиента есть id, имя, логин, пароль и контейнер Счетов. При этом у каждого Счёта есть свой id, id клиента, которому он принадлежит, а также название и баланс. Доступ к счетам имеет только клиент.

Данные хранятся в двух файлах: файл клиентов и файл счетов. У каждого счёта записывается id клиента, чтобы можно было их идентифицировать.

Так вот, какой контейнер лучше использовать для взаимодействия с клиентами и счетами?

В первом случае я рассматриваю как вариант std::vector и std::map.
std::map привлекает меня возможностью использовать id в качестве ключа, но при этом у самого объекта тоже должна быть переменная id, поэтому использовать std::map возможно нецелесообразно.

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
 
class Client
{
private:
    class Account
    {
    private:
      int id;
      int clientId;
      string name;
      double balance;
    public:
      Account();
      ~Account();
    };
    int id;
    string name;
    string login;
    string password;
    vector<Account> acs; // map<int, Account> acs;
 
public:
 
    Client();
    ~Client();
};
 
class Clients
{
private:
    vector<Client> cls; // map<int, Client> cls;
public:
    Clients();
    ~Clients();
};
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2020, 22:49
Ответы с готовыми решениями:

Не могу разобраться как обновить в std::map<std::string, вектор_структур>
Не могу разобраться как обновить вектор структур после его добавления в map без удаления и...

Вопрос по std::map
В качестве хэш-таблицы для строк (AnsiString) я использовал std::map. От таблицы мне нужно было ещё...

Изменить std::map
Приветствую всех. Мне на работе приходится работать не совсем со свежим компилятором С++ и такой же...

переписать std::map
Добрый вечер! Есть работающая программа, в которой используется map, все работало хорошо, но...

5
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
05.11.2020, 09:27 2
Цитата Сообщение от emizxia Посмотреть сообщение
Так вот, какой контейнер лучше использовать для взаимодействия с клиентами и счетами?
В обоих случаях используй std::map
1
447 / 323 / 129
Регистрация: 18.07.2017
Сообщений: 1,454
05.11.2020, 11:18 3
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
В обоих случаях используй std::map
C ключем std::hash.
0
0 / 0 / 0
Регистрация: 20.11.2019
Сообщений: 46
05.11.2020, 12:36  [ТС] 4
А какой здесь смысл в использовании std::hash?
0
447 / 323 / 129
Регистрация: 18.07.2017
Сообщений: 1,454
05.11.2020, 13:03 5
C ключем std::hash.
Цитата Сообщение от emizxia Посмотреть сообщение
А какой здесь смысл в использовании std::hash?
Научиться использовать std::hash
0
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
06.11.2020, 19:23 6
Цитата Сообщение от emizxia Посмотреть сообщение
А какой здесь смысл в использовании std::hash?
Никакого
0
06.11.2020, 19:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.11.2020, 19:23
Помогаю со студенческими работами здесь

Std::vector push_back vs emplace_back
Бывают ли случаи, когда push_back невозможно реализовать через emplace_back, либо такая реализация...

Передача std::vector в функцию
#include &lt;iostream&gt; #include &lt;vector&gt; void copy(std::vector&lt;int&gt; a, std::vector&lt;int&gt;b) { ...

Обход элементов std::map в порядке их создания
Имеется ассоциативный массив и его заполнение: std::map&lt;unsigned,string&gt; arr; arr = &quot;abc&quot;; arr...

std::weak_ptr & std::enable_shared_for_this. Как передаем this?
#include &lt;iostream&gt; #include &lt;memory&gt; class SharedObject : public...

std::string, std::fstream, ошибка кучи
где то начало вылетать при операции += с локальной переменной std::string. Заменил на свой qString....

std::vector доступ по индексу vs доступ по итератору
std::vector&lt;int&gt; tmp; int i = 0; tmp.resize(1000000); std::vector&lt;int&gt;::iterator it...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru