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

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

Восстановить пароль Регистрация
 
 
Dj_Crush
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 23
14.07.2015, 15:00     Возможно ли вложение контейнера array в контейнер vector? #1
мне надо в динамическом массиве хранить 3-х мерные координаты треугольников.
пытаюсь сделать вот так:



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



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

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

и как записывать значения в такой массив?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2015, 15:00     Возможно ли вложение контейнера array в контейнер vector?
Посмотрите здесь:

C++ Копирование контейнера vector в конструкторе (STL)
reallocation памяти контейнера std::vector C++
контейнер vector C++
C++ Создать матрицу из контейнера std::array
C++ Контейнер std::vector
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
VVildVVolf
82 / 1 / 0
Регистрация: 08.10.2012
Сообщений: 54
14.07.2015, 15:03     Возможно ли вложение контейнера array в контейнер vector? #2
vector<vector<float>> ?

или
struct MyStruct{
int x1;
...
int z3;
}
vector<MyStruct>
nmcf
4315 / 3736 / 1259
Регистрация: 14.04.2014
Сообщений: 14,653
14.07.2015, 15:04     Возможно ли вложение контейнера array в контейнер vector? #3
Например, так:
C++
1
std::vector<std::tuple<float, float, float, float, float, float, float, float, float>> coordinates;
Доступ:
C++
1
std::get<0>(coordinates[i])
Dj_Crush
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 23
14.07.2015, 15:04  [ТС]     Возможно ли вложение контейнера array в контейнер vector? #4
то есть array в vector нельзя вложить?
volvo
Супер-модератор
 Аватар для volvo
21829 / 14192 / 3956
Регистрация: 22.10.2011
Сообщений: 25,080
Записей в блоге: 2
14.07.2015, 15:05     Возможно ли вложение контейнера array в контейнер vector? #5
Цитата Сообщение от Dj_Crush Посмотреть сообщение
данная комбинация не работает
gcc 4.8.3 - нормально компилирует
nmcf
4315 / 3736 / 1259
Регистрация: 14.04.2014
Сообщений: 14,653
14.07.2015, 15:06     Возможно ли вложение контейнера array в контейнер vector? #6
Цитата Сообщение от Dj_Crush Посмотреть сообщение
то есть array в vector нельзя вложить?
Если он внутри структуры, можно.
Dj_Crush
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 23
14.07.2015, 15:07  [ТС]     Возможно ли вложение контейнера array в контейнер vector? #7
если данная комбинация работает. как я с помощью coordinates.push_back(???); могу записывать значения? что я должен поставить вместо восклицательных знаков?
DrOffset
6460 / 3834 / 885
Регистрация: 30.01.2014
Сообщений: 6,629
14.07.2015, 15:07     Возможно ли вложение контейнера array в контейнер vector? #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

Может стоит ошибку сюда привести?
Dj_Crush
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 23
14.07.2015, 15:08  [ТС]     Возможно ли вложение контейнера array в контейнер vector? #9
а std::array в std::vector можно?
DrOffset
6460 / 3834 / 885
Регистрация: 30.01.2014
Сообщений: 6,629
14.07.2015, 15:09     Возможно ли вложение контейнера array в контейнер vector? #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}); 
}
Dj_Crush
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 23
14.07.2015, 15:16  [ТС]     Возможно ли вложение контейнера array в контейнер vector? #11
visual c выдает ошибку...не компилируется

Добавлено через 3 минуты
кто-нибудь знает ответ?
DrOffset
6460 / 3834 / 885
Регистрация: 30.01.2014
Сообщений: 6,629
14.07.2015, 15:17     Возможно ли вложение контейнера array в контейнер vector? #12
Цитата Сообщение от Dj_Crush Посмотреть сообщение
visual c выдает ошибку...не компилируется
Это С++11. Версия VS какая? В VS2013 этот код точно работает, возможно в более ранних версиях еще не было поддержкий этой возможности С++11
volvo
Супер-модератор
 Аватар для volvo
21829 / 14192 / 3956
Регистрация: 22.10.2011
Сообщений: 25,080
Записей в блоге: 2
14.07.2015, 15:17     Возможно ли вложение контейнера array в контейнер vector? #13
Цитата Сообщение от Dj_Crush Посмотреть сообщение
кто-нибудь знает ответ?
Ответ уже привели: нормальный компилятор прекрасно позволяет подобное.
Dj_Crush
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 23
14.07.2015, 15:18  [ТС]     Возможно ли вложение контейнера array в контейнер vector? #14
у меня VS 2013
DrOffset
6460 / 3834 / 885
Регистрация: 30.01.2014
Сообщений: 6,629
14.07.2015, 15:18     Возможно ли вложение контейнера array в контейнер vector? #15
Цитата Сообщение от Dj_Crush Посмотреть сообщение
кто-нибудь знает ответ?
Правильный ответ такой: Если хочешь, чтобы это работало - обновляй VS или используй компилятор с более полной поддержкой 11 стандарта С++ (clang или gcc (mingw)).
На rextester.com есть возможность онлайн скомпилировать программу компилятором из VS2013. Этот код работает:
http://rextester.com/QTM71215
nmcf
4315 / 3736 / 1259
Регистрация: 14.04.2014
Сообщений: 14,653
14.07.2015, 15:19     Возможно ли вложение контейнера array в контейнер vector? #16
Используй tuple, он точно компилируется, или структуру с древним массивом.
Kerry_Jr
Модератор
 Аватар для Kerry_Jr
1867 / 1663 / 580
Регистрация: 14.05.2014
Сообщений: 4,773
Записей в блоге: 1
Завершенные тесты: 5
14.07.2015, 15:23     Возможно ли вложение контейнера array в контейнер vector? #17
Цитата Сообщение от Dj_Crush Посмотреть сообщение
C++
1
vector<array<float,9> > coordinates;
встречался с такой бедой: из-за пробела между двумя крайними угловыми скобками студия выдавала ошибку.
C++
1
vector<array<float,9>> coordinates;
Dj_Crush
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 23
14.07.2015, 15:27  [ТС]     Возможно ли вложение контейнера array в контейнер vector? #18
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <vector>
#include <array>
#include <iostream>
 
int main()
{
    std::vector<std::array<float, 9>> coordinates;
 
    coordinates.push_back({ 1.2, 3.3, 4.3 });
 
    std::cout << coordinates[0][0] << std::endl;
    std::cout << coordinates[0][1] << std::endl;
    std::cout << coordinates[0][2] << std::endl;
    std::cout << coordinates[0][3] << std::endl;
    return 0;
}
в vs 2013 не компилируется....
DrOffset
6460 / 3834 / 885
Регистрация: 30.01.2014
Сообщений: 6,629
14.07.2015, 15:31     Возможно ли вложение контейнера array в контейнер vector? #19
Цитата Сообщение от Dj_Crush Посмотреть сообщение
в vs 2013 не компилируется....
Ну ошибку-то хоть можно увидеть?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2015, 15:33     Возможно ли вложение контейнера array в контейнер vector?
Еще ссылки по теме:

Очистка контейнера vector C++
Создать стек на основе контейнера vector C++
C++ Обработка STL контейнера vector

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

Или воспользуйтесь поиском по форуму:
Dj_Crush
0 / 0 / 0
Регистрация: 14.07.2015
Сообщений: 23
14.07.2015, 15:33  [ТС]     Возможно ли вложение контейнера array в контейнер vector? #20
3 IntelliSense: no instance of overloaded function "std::vector<_Ty, _Alloc>:ush_back [with _Ty=std::array<float, 9U>, _Alloc=std::allocator<std::array<float, 9U>>]" matches the argument list
argument types are: ({...})
object type is: std::vector<std::array<float, 9U>, std::allocator<std::array<float, 9U>>> d:\Boulder\Win32Project1\Win32Project1\main.cpp
Yandex
Объявления
14.07.2015, 15:33     Возможно ли вложение контейнера array в контейнер vector?
Ответ Создать тему
Опции темы

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