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

Из vector в массив. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
XuLLlHuK
Сообщений: n/a
22.02.2012, 09:53     Из vector в массив. #1
Доброго всем утра коллеги!
Собственно, есть вектор с шаблоном
C++
1
std::vector<float[3]> vect;
и теперь надо каждый из элементов вектора передать в массив
C++
1
2
3
4
5
for(unsigned int i=0; i<vect.size(); i++){
float arr[3]={0, 0, 0};
arr = vect.at(i)//пишет: error C2106: '=' : left operand must be l-value
...
}
Как передать сделать правильно?:-)
П.С.Давно очень не занимался С++, не пойму что ему не нравится...

Заранее благодарен за помощь!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
22.02.2012, 10:30     Из vector в массив. #2
Массивы нельзя копировать целиком, их можно копировать только поэлементно.

Честно говоря, я не уверен, что вообще корректно работать с вектором массивов. Как вы добавляете элементы в вектор? Он не ругается? )
XuLLlHuK
Сообщений: n/a
22.02.2012, 10:33     Из vector в массив. #3
Добавляю с помощью push_back. Нет, не ругается!
Как тогда быть в этом случае?
fasked
Эксперт C++
 Аватар для fasked
4925 / 2505 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
22.02.2012, 10:34     Из vector в массив. #4
XuLLlHuK, массивы нельзя просто так присваивать друг другу. Вообще я бы посоветовал Вам использовать вектор вектор или вектор шаблонных массивов. Жить бы стало проще.
C++
1
2
std::vector<std::vector<float> > v;
std::vector<std::array<float, 3> > v;
Ну а уж если хочется использовать обычные массивы, то копируйте их содержимое по-одному элементу, или используя std::copy.
Luke
37 / 37 / 1
Регистрация: 21.02.2012
Сообщений: 95
22.02.2012, 10:43     Из vector в массив. #5
Цитата Сообщение от XuLLlHuK Посмотреть сообщение
for(unsigned int i=0; i<vect.size(); i++){
float arr[3]={0, 0, 0};
arr = vect.at(i)//пишет: error C2106: '=' : left operand must be l-value
...
}
C++
1
arr[i] = vect[i];// оператор [] вернет ссылку и значение по ней можно будет поменять.
но для этого размер arr должен быть не меньше размера vect, иначе будет произведена запись за границы arr
так что это вполне возможно циклом, главное чтоб размер был подходящ
иначе придется использовать то, что подсказали выше

Добавлено через 4 минуты
Цитата Сообщение от XuLLlHuK Посмотреть сообщение
не пойму что ему не нравится...
не нравилось ему то что arr - указатель на начало массива а ему нужна сслыка lvalue.
arr[i];
Yandex
Объявления
22.02.2012, 10:43     Из vector в массив.
Ответ Создать тему
Опции темы

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