Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Dj_Crush
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 26
#1

Возможно ли вложение контейнера array в контейнер vector? - C++

14.07.2015, 15:00. Просмотров 642. Ответов 29
Метки нет (Все метки)

мне надо в динамическом массиве хранить 3-х мерные координаты треугольников.
пытаюсь сделать вот так:



vector<array<float,9> > coordinates;
данная комбинация не работает.



как можно создать динамический массив на 9 чисел?

как можно обращаться к отдельным координатам - x1,y1,z1 и т.д

и как записывать значения в такой массив?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2015, 15:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Возможно ли вложение контейнера array в контейнер vector? (C++):

Очистка контейнера vector - C++
Доброго времени суток господа программисты. У меня возникла дилемма. В общем, у меня есть вектор std::vector&lt;std::vector&lt;int&gt; &gt; grid;...

Ошибка использования контейнера array - C++
Задание:Дан целочисленный массив размера N. Назовем серией группу подряд идущих одинаковых элементов, а длиной серии - количество этих...

контейнер vector - C++
Как я понимаю, vector представляет собой что-то вроде динамического массива. Но массивы бывают одномерные,двумерные и так далее. Есть ли...

Создать матрицу из контейнера std::array - C++
Есть код: #include &lt;iostream&gt; #include &lt;array&gt; using namespace std; int main () { array &lt;int,5&gt; myarray; return...

Обработка STL контейнера vector - C++
Текст дан в виде вектора. Отсортировать элементы этого вектора и превратить на два списка так, чтобы в первом были только те элементы,...

Контейнер std::vector - C++
Помогите определить почему не работает задача. Оибку выбивает на строку k.push_back(0); #include &lt;iostream&gt; #include &lt;math.h&gt; ...

29
VVildVVolf
82 / 1 / 0
Регистрация: 08.10.2012
Сообщений: 54
14.07.2015, 15:03 #2
vector<vector<float>> ?

или
struct MyStruct{
int x1;
...
int z3;
}
vector<MyStruct>
0
nmcf
5686 / 4997 / 1704
Регистрация: 14.04.2014
Сообщений: 20,399
14.07.2015, 15:04 #3
Например, так:
C++
1
std::vector<std::tuple<float, float, float, float, float, float, float, float, float>> coordinates;
Доступ:
C++
1
std::get<0>(coordinates[i])
0
Dj_Crush
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 26
14.07.2015, 15:04  [ТС] #4
то есть array в vector нельзя вложить?
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24118 / 16099 / 4898
Регистрация: 22.10.2011
Сообщений: 28,544
Записей в блоге: 5
14.07.2015, 15:05 #5
Цитата Сообщение от Dj_Crush Посмотреть сообщение
данная комбинация не работает
gcc 4.8.3 - нормально компилирует
0
nmcf
5686 / 4997 / 1704
Регистрация: 14.04.2014
Сообщений: 20,399
14.07.2015, 15:06 #6
Цитата Сообщение от Dj_Crush Посмотреть сообщение
то есть array в vector нельзя вложить?
Если он внутри структуры, можно.
0
Dj_Crush
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 26
14.07.2015, 15:07  [ТС] #7
если данная комбинация работает. как я с помощью coordinates.push_back(???); могу записывать значения? что я должен поставить вместо восклицательных знаков?
0
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
14.07.2015, 15:07 #8
Цитата Сообщение от Dj_Crush Посмотреть сообщение
данная комбинация не работает.
Она работает.
C++
1
2
3
4
5
6
7
#include <array>
#include <vector>
 
int main()
{
    std::vector<std::array<float, 9>> coordinates;
}
Пруф: http://rextester.com/CGM90868

Может стоит ошибку сюда привести?
0
Dj_Crush
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 26
14.07.2015, 15:08  [ТС] #9
а std::array в std::vector можно?
0
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
14.07.2015, 15:09 #10
Цитата Сообщение от Dj_Crush Посмотреть сообщение
могу записывать значения? что я должен поставить вместо восклицательных знаков?
Например так:
C++
1
2
3
4
5
6
int main()
{
    std::vector<std::array<float, 9>> coordinates;
    
    coordinates.push_back({1.2, 3.3, 4.3}); 
}
1
Dj_Crush
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 26
14.07.2015, 15:16  [ТС] #11
visual c выдает ошибку...не компилируется

Добавлено через 3 минуты
кто-нибудь знает ответ?
0
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
14.07.2015, 15:17 #12
Цитата Сообщение от Dj_Crush Посмотреть сообщение
visual c выдает ошибку...не компилируется
Это С++11. Версия VS какая? В VS2013 этот код точно работает, возможно в более ранних версиях еще не было поддержкий этой возможности С++11
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24118 / 16099 / 4898
Регистрация: 22.10.2011
Сообщений: 28,544
Записей в блоге: 5
14.07.2015, 15:17 #13
Цитата Сообщение от Dj_Crush Посмотреть сообщение
кто-нибудь знает ответ?
Ответ уже привели: нормальный компилятор прекрасно позволяет подобное.
0
Dj_Crush
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 26
14.07.2015, 15:18  [ТС] #14
у меня VS 2013
0
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
14.07.2015, 15:18 #15
Цитата Сообщение от Dj_Crush Посмотреть сообщение
кто-нибудь знает ответ?
Правильный ответ такой: Если хочешь, чтобы это работало - обновляй VS или используй компилятор с более полной поддержкой 11 стандарта С++ (clang или gcc (mingw)).
На rextester.com есть возможность онлайн скомпилировать программу компилятором из VS2013. Этот код работает:
http://rextester.com/QTM71215
0
14.07.2015, 15:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2015, 15:18
Привет! Вот еще темы с ответами:

Копирование контейнера vector в конструкторе (STL) - C++
Добрый день! У меня есть класс, в котором объявлен вектор указателей на объекты: class Schedule { public: ... Schedule(void);...

Создать стек на основе контейнера vector - C++
На основе контейнера vector построить стек целых чисел. Выполнить операции занесения элемента в стек, извлечение значения с вершины стека,...

Reallocation памяти контейнера std::vector - C++
расширение памяти в этом контейнере происходит по логарифмическому закону. Объясните , пожалуйста, знатоки, зачем это нужно?

Инициализация графа (контейнер vector) - C++
Нашёл как ра то, что мне нужно, алгоритм Форда-Беллмана. С помощью этого алгоритма можно найти кратчайшие пути между заданной вершиной и...


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

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

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