Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Серргей
-4 / 0 / 2
Регистрация: 16.03.2015
Сообщений: 47
1

Как у вас двумерные вектора устроены?

07.05.2018, 20:44. Просмотров 863. Ответов 38
Метки нет (Все метки)

Вектор представляет собой последовательность объектов с динамическим размером, которая обеспечивает произвольный доступ к массиву operator[]. Функция-член push_back копирует свои аргументы с помощью конструктора копирования, добавляет, что копия как последний элемент в векторе и увеличивает его размер на единицу. pop_back делает обратное, удаляя последний элемент. Вставка или удаление элементов с конца вектора берет амортизированное постоянное время, а вставка или удаление из любого другого места занимает линейное время. Это основы векторов. Их гораздо больше. В большинстве случаев вектор должен быть вашим первым выбором в массиве C-стиля. Прежде всего, они имеют динамический размер, что означает, что они могут расти по мере необходимости. Вам не нужно делать всевозможные исследования, чтобы определить оптимальный статический размер, как в случае с массивами C; вектор растет по мере необходимости, и он может быть изменен более или менее вручную, если вам нужно. Во-вторых, векторы предлагают проверку границ с помощью функции-члена at (но не с operator[]), так что вы можете что-то сделать, если ссылаетесь на несуществующий индекс, а не просто наблюдаете за сбоем в работе программы или хуже, продолжая выполнение с поврежденными данными.

если в с++ vector является заменой массива в си, то как создать двухмерный вектор?
например нужно считать матрицу размером х на у из файла в вектор при этом размер матрицы неизвестен

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
#include <stdlib.h>
#include <stdio.h>
 
int NUM_OBJECTS = 20;
 
typedef struct{
    int* val;
    void* next;
} n_obj;
 
#define Q_INT malloc(sizeof(int))
#define Q_OBJ malloc(sizeof(n_obj))
#define Q_SEQ(x) calloc((x), sizeof(int))
 
int main()
{
    int clear_i;
    int i, left_i, cur_sz, cur_num;
    n_obj **cl;
    n_obj *temp;
    n_obj *cur_list;
    n_obj *cur_seq;
     
    cl = malloc(sizeof(n_obj*)*NUM_OBJECTS);
     
    for(i=0;i<NUM_OBJECTS;i++)
    {
        cl[i] = Q_OBJ;
        cl[i]->val = NULL;
         
        temp = Q_OBJ;
        temp->val = Q_SEQ(1);
         
        temp->val[0] = i + 1;
         
        temp->next = cl[i]; 
        cl[i] = temp;
         
        cur_list = cl[i];
        for(left_i=0; left_i<i; left_i++)
        {
            for(cur_seq=cl[left_i];cur_seq->val!=NULL;cur_seq=cur_seq->next)
            {               
                if(cur_seq->val[0]<=(i - left_i))
                {
                    temp = Q_OBJ;
                    temp->val = Q_SEQ(left_i + 3);
                     
                    temp->val[0] =  i - left_i;
                     
                    temp->next = cur_list->next;
                    cur_list->next = temp; 
                    cur_list = temp;
                     
                    for(cur_num=0;cur_num<=left_i;cur_num++)
                        cur_list->val[cur_num+1] = cur_seq->val[cur_num];
                }
            }
        }
    }
     
    for(i = 0; i < NUM_OBJECTS; i++)
    {
        cur_sz = 0;
        printf("---------------------------\n");
        for(cur_list = cl[i]; cur_list->val != NULL; cur_list = cur_list->next)
        {
            for(clear_i = 0; cur_list->val[clear_i] != 0; clear_i++)
            {
                printf("%d ", cur_list->val[clear_i]);
            }
            printf("\n");
            cur_sz++;
        }
        printf("Number of partitions = %d\n", cur_sz);
     
    }
    return 0;
}
Вроде так ?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2018, 20:44
Ответы с готовыми решениями:

Как устроены проекты VS
Подскажите плиз, как организована прога в VS? И определения что такое solution, project и тд? Как...

Как устроены чаты?
Всем привет. Я раньше никогда не висел на чатах, а тут случайно попал, мне стало интересно как они...

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

Как устроены массивы
Здрасте! Прочитал на сайте про $_SERVER &quot;... в него PHP-интерпретатор помещает переменные,...

Как устроены игры?
Есть ли книга или руководство на русском, в котором объясняется как устроены компьютерные игры? Я...

38
Серргей
-4 / 0 / 2
Регистрация: 16.03.2015
Сообщений: 47
09.05.2018, 22:47  [ТС] 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
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
#include <stdlib.h>
#include <stdio.h>
 
int NUM_OBJECTS = 20;
 
typedef struct{
    int* val;
    void* next;
} n_obj;
 
#define Q_INT malloc(sizeof(int))
#define Q_OBJ malloc(sizeof(n_obj))
#define Q_SEQ(x) calloc((x), sizeof(int))
 
int main()
{
    int clear_i;
    int i, left_i, cur_sz, cur_num;
    n_obj **cl;
    n_obj *temp;
    n_obj *cur_list;
    n_obj *cur_seq;
     
    cl = malloc(sizeof(n_obj*)*NUM_OBJECTS);
     
    for(i=0;i<NUM_OBJECTS;i++)
    {
        cl[i] = Q_OBJ;
        cl[i]->val = NULL;
         
        temp = Q_OBJ;
        temp->val = Q_SEQ(1);
         
        temp->val[0] = i + 1;
         
        temp->next = cl[i]; 
        cl[i] = temp;
         
        cur_list = cl[i];
        for(left_i=0; left_i<i; left_i++)
        {
            for(cur_seq=cl[left_i];cur_seq->val!=NULL;cur_seq=cur_seq->next)
            {               
                if(cur_seq->val[0]<=(i - left_i))
                {
                    temp = Q_OBJ;
                    temp->val = Q_SEQ(left_i + 3);
                     
                    temp->val[0] =  i - left_i;
                     
                    temp->next = cur_list->next;
                    cur_list->next = temp; 
                    cur_list = temp;
                     
                    for(cur_num=0;cur_num<=left_i;cur_num++)
                        cur_list->val[cur_num+1] = cur_seq->val[cur_num];
                }
            }
        }
    }
     
    for(i = 0; i < NUM_OBJECTS; i++)
    {
        cur_sz = 0;
        printf("---------------------------\n");
        for(cur_list = cl[i]; cur_list->val != NULL; cur_list = cur_list->next)
        {
            for(clear_i = 0; cur_list->val[clear_i] != 0; clear_i++)
            {
                printf("%d ", cur_list->val[clear_i]);
            }
            printf("\n");
            cur_sz++;
        }
        printf("Number of partitions = %d\n", cur_sz);
     
    }
    return 0;
}
ошибка осталось Неустранимая ошибка C1010

Предупреждение компилятора (уровень 1) C4552 ператор»: оператор не имеет результата; требуется оператор с побочным действием
Если выражение содержит оператор без побочных действий в верхней части выражения, она, вероятно, является ошибкой.
Чтобы устранить это предупреждение, необходимо разместить выражение в скобках.
Следующий пример приводит к возникновению ошибки C4552:

Копировать
// C4552.cpp
// compile with: /W1
int main() {
int i, j;
i + j; // C4552
// try the following line instead
// (i + j);
}
0
Nishen
09.05.2018, 23:06
  #3

Не по теме:

Чувак, что происходит?

0
lArtl
311 / 164 / 76
Регистрация: 09.10.2014
Сообщений: 779
Завершенные тесты: 3
10.05.2018, 00:18 4
C++
1
2
3
#include <vector>
....
std::vector<std::vector<int>> matrix;
0
10.05.2018, 00:18
Croessmah
++Ͻ
15776 / 8917 / 1711
Регистрация: 27.09.2012
Сообщений: 21,922
Записей в блоге: 2
Завершенные тесты: 2
10.05.2018, 02:33 5
Цитата Сообщение от Серргей Посмотреть сообщение
как создать двухмерный вектор?
Вектор векторов - std::vector<std::vector<value_type>
0
Серргей
-4 / 0 / 2
Регистрация: 16.03.2015
Сообщений: 47
10.05.2018, 13:00  [ТС] 6
1
2
3 #include <vector>
....
std::vector<std::vector<int>> matrix; или так std::vector<std::vector<value_type>

как в итоге ?

пошутили ?
0
lArtl
311 / 164 / 76
Регистрация: 09.10.2014
Сообщений: 779
Завершенные тесты: 3
10.05.2018, 14:38 7
Цитата Сообщение от Серргей Посмотреть сообщение
1
2
3 #include <vector>
....
std::vector<std::vector<int>> matrix; или так std::vector<std::vector<value_type>
как в итоге ?
пошутили ?
Это ответ на первый вопрос.
Ответ на второй - нет, это не так.

На третий - так, как я написал.
На четвертый - нет, не пошутил

Добавлено через 1 минуту
value_type - тип значения, тоесть int, float и так далее по списку
0
Серргей
-4 / 0 / 2
Регистрация: 16.03.2015
Сообщений: 47
11.05.2018, 18:32  [ТС] 8
value_type - тип значения, тоесть int, float и так далее по списку что с ними не так их изменить ?
0
lArtl
311 / 164 / 76
Регистрация: 09.10.2014
Сообщений: 779
Завершенные тесты: 3
12.05.2018, 10:26 9
Цитата Сообщение от Серргей Посмотреть сообщение
value_type - тип значения, тоесть int, float и так далее по списку что с ними не так их изменить ?
Почитайте первые 10-20 страниц любого учебника по с++...
0
Серргей
-4 / 0 / 2
Регистрация: 16.03.2015
Сообщений: 47
12.05.2018, 20:53  [ТС] 10
читал и ?
0
TRam_
зомбяк
1246 / 936 / 278
Регистрация: 14.05.2017
Сообщений: 3,044
12.05.2018, 21:14 11
Серргей, читали именно по С++ или по С ? Если по теме, то

C++
1
2
3
4
5
6
7
8
9
10
11
#include <vector>
int main()
{ 
   int x = 3, y = 5;
   std::vector<std::vector<int>> matrix(x);
   for(int i = 0; i < x; i++)
     matrix[i].resize(y);
 
   matrix[2][4] = 78;
   return 0;
}
0
Серргей
-4 / 0 / 2
Регистрация: 16.03.2015
Сообщений: 47
16.05.2018, 11:54  [ТС] 12
Неустранимая ошибка C1010

Базовый класс ToolTaskExtension
Многие задачи наследуют от класса ToolTaskExtension, наследующего от класса ToolTask, который в свою очередь наследует от класса Task. Эта цепочка наследования добавляет несколько параметров в задачи, которые от них происходят. Эти параметры перечислены в настоящем документе.

ошибки
0
lArtl
311 / 164 / 76
Регистрация: 09.10.2014
Сообщений: 779
Завершенные тесты: 3
16.05.2018, 11:59 13
Цитата Сообщение от Серргей Посмотреть сообщение
Неустранимая ошибка C1010
Базовый класс ToolTaskExtension
Многие задачи наследуют от класса ToolTaskExtension, наследующего от класса ToolTask, который в свою очередь наследует от класса Task. Эта цепочка наследования добавляет несколько параметров в задачи, которые от них происходят. Эти параметры перечислены в настоящем документе.
ошибки
И что?
0
Серргей
-4 / 0 / 2
Регистрация: 16.03.2015
Сообщений: 47
19.05.2018, 00:19  [ТС] 14
как их исправить ?
0
lArtl
311 / 164 / 76
Регистрация: 09.10.2014
Сообщений: 779
Завершенные тесты: 3
20.05.2018, 00:51 15
C1010
0
Серргей
-4 / 0 / 2
Регистрация: 16.03.2015
Сообщений: 47
21.05.2018, 11:53  [ТС] 16
ну да

Добавлено через 1 минуту
вот что пишут :Самая актуальная документация по Visual Studio 2017: Документация по Visual Studio 2017.

непредвиденный конец файла при поиске предкомпилированного заголовка. Вы забыли добавить "#include имя" источник?

Включить файл, заданный параметром /Yu не указан в исходном файле. Этот параметр включен по умолчанию в большинстве типов проектов Visual C++, а «stdafx.h» является значение по умолчанию включаемого файла, указанные в этом параметре.

В среде Visual Studio воспользуйтесь одним из следующих методов для устранения этой ошибки.


Если вы не использовать предварительно скомпилированные заголовки, установите создавать или использовать предкомпилированный заголовок свойство исходных файлов для не использовать предкомпилированный заголовок. Установка данного параметра компилятора, выполните следующие действия.


В обозревателе решений щелкните проект, щелкните правой кнопкой мыши имя проекта и нажмите кнопку свойства.


В левой области щелкните C/C++ папки.


Щелкните предварительно скомпилированные заголовки узла.


В области справа щелкните создавать или использовать предварительно скомпилированный заголовочный файл, а затем нажмите кнопку не использовать предварительно скомпилированные заголовки.


Убедитесь, что не случайно удален, переименован или удален файл заголовка (по умолчанию файл stdafx.h) из текущего проекта. Этот файл должен быть включен до любого другого кода в файле исходного кода с помощью #include «stdafx.h». (Этот файл заголовка указан как создать или использовать PCH во всем файле свойства проекта)
0
lArtl
311 / 164 / 76
Регистрация: 09.10.2014
Сообщений: 779
Завершенные тесты: 3
22.05.2018, 13:09 17
Да, в документации все четко написано, по шагам. Добавить к этому нечего.
0
Серргей
-4 / 0 / 2
Регистрация: 16.03.2015
Сообщений: 47
02.06.2018, 12:25  [ТС] 18
а что с этим делать ?
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7561 / 3727 / 506
Регистрация: 04.12.2011
Сообщений: 10,704
Записей в блоге: 5
02.06.2018, 13:58 19
Цитата Сообщение от Серргей Посмотреть сообщение
Как у вас двумерные вектора устроены? - C++
В С++ не бывает двумерных векторов. Можно саздать вектор векторов как уже сказано. В этом случае легко получить зубчатый массив, например. То есть следить за размером нужно самому. Можна сделать обёртку для комфорта или даже шаблон соорудить. Свободы много.
0
lArtl
311 / 164 / 76
Регистрация: 09.10.2014
Сообщений: 779
Завершенные тесты: 3
02.06.2018, 14:03 20
Цитата Сообщение от IGPIGP Посмотреть сообщение
...
Забей, это тролль)
0
02.06.2018, 14:03
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.06.2018, 14:03

Как устроены словари dict?
Добрый день. Учу питон и столкнулся с такой особенностью: d={'a': '123', 'b': 'qwe', 'c':...

Как устроены оси в Unity?
но при этом Так же по оси х возрастает впрво, проверил( персонаж движется вправо - х...

Как устроены аудиопроигрыватели,видеопроигрыватели?(т.е программы)
Видел код фотки,куча цифр со странными числами в 16-тиричной системе. Как это всё устроено?


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru