Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
3 / 2 / 1
Регистрация: 15.11.2020
Сообщений: 34

Как правильно использовать/освобождать вложенные std::vector?

15.11.2020, 17:03. Показов 2027. Ответов 20

Студворк — интернет-сервис помощи студентам
добрый день!
учусь пользоваться классами std, подскажите!
как правильно объявлять/создавать std::vector<T>, чтоб можно было его передавать между подфункциями, не делая глобальной переменной?
как правильно делать, если мне требуется нечто вложенное, вроде: std::vector<std::pair<DWORD, std::vector<T>>>?
если я сделаю примерно так, это будет корректно? у меня MS VS 2019, если важно...
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
#include <iostream>
#include <vector>
#include <windows.h>
 
typedef std::vector<WORD> my_elements;
typedef std::pair<WORD, my_elements> my_list;
typedef std::vector<my_list> my_list_list;
 
void fill_list(my_list& list)
{
    my_elements element; // объявили вектор чисел
    for (int i = 1; i < 5; i++)
    {
        element.push_back(list.first + i); // тут просто добавляет значение WORD
    }
    list.second = element; // тут будет копирование или оно засунет сам element?
}
 
void fill_list_list(my_list_list& list_list)
{
    for (int i = 0; i < 5; i++)
    {
        my_list list; // объявили пару число / вектор
        list.first = rand();
        fill_list(list);
        list_list.push_back(list); // тут будет копирование или оно засунет сам list?
    }
}
 
int main()
{
    std::cout << "Hello World!\n";
    my_list_list list_list; // объявили вектор пар число / вектор
    fill_list_list(list_list);
    for (const auto& list : list_list)
    {
        std::cout << "\tlist: " << list.first << std::endl;
        for (const auto& element : list.second)
            std::cout << "\t\telement: " << element << std::endl;
    }
    std::cout << "Goodbye World!\n";
    return 0;
}
оно будет копировать переменную или помещать саму объявленную? если копирует, то как переписать чтоб без лишнего копирования?
оно само освободится или надо вручную? а если само - то когда именно оно будет освобождаться?
что-то изменится, если my_list будет не парой, а структурой или классом у которого одно из полей будет std::vector?

спасибо!

Добавлено через 6 минут
а ещё... могу ли я как-то сделать чтоб в my_list вместо my_elements использовать my_list_list который объявляется ниже?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.11.2020, 17:03
Ответы с готовыми решениями:

Как передать целочисленную матрицу типа std::vector<std::vector<int> > в функцию?
Здравствуйте. Почитал на форуме, но так и не понял что я делаю не так. Имеется двумерный вектор. Размера .. Нужно его передать в...

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же числа, но не в виде строк, а в виде...

Как изменять размер std::vector<std::vector>?
Здравствуйте, как нужно изменять размер std::vector&lt;std::vector&gt; например: std::vector&lt;std::vector&lt;float&gt;&gt; data; ...

20
3 / 2 / 1
Регистрация: 15.11.2020
Сообщений: 34
22.11.2020, 23:28  [ТС]
Студворк — интернет-сервис помощи студентам
ой... я и не сохранял это в избранное; помню только две вещи:
* это было где-то на stackoverflow
* это полностью весь код из сообщения (ничего другого там просто не было)
плюс как выяснилось там вовсе забыли написать одну строчку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.11.2020, 23:28
Помогаю со студенческими работами здесь

Вывести значения std::vector<std::vector<int*> >
Подскажите, как вывести значения? const size_t row = 3; const size_t col = 3; std::vector&lt;std::vector&lt;int*&gt; &gt; imatrix; ...

Реализовать поиск в массиве пользовательских объектов по заданному полю (использовать std::vector)
помогите,пожалуйста,очень нужно!!!!!! Имеются сведения(модель-цена). Выделить заданное число самых дешевых моделей.(ЧЕРЕЗ ВЕКТОР)

Как правильно освобождать мютексы
Здравствуйте, у меня вопрос, есть разница в том как освобождать мютексы?? пример захватываем мютекс А, потом захватываем В ......

Как правильно освобождать память
Подскажите пожалуйста ,где память чистить в таком случае?Или как это правильно сделать. char *funk(.....){ char *name = new...

Std::vector<std::pair<std::vector<int>::iterator, std::vector<int>::iterator>
Вопрос по вектору. Допустим есть вектор, std::vector&lt;int&gt; vec; на каком - то этапе заполнения я ставлю закладку итератора, ...


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

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru