![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Userman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 21.8.2008 Репутация: нет Всего: нет |
Есть класс, содержащий вектор. Есть метод, который на основе этого вектора создаёт новый такого же размера, затем вектор, который является полем класса должен стать новым вектором.
Читал, что если надо присвоить один список другому, но присвоенный после этого не нужен, то подойдёт std::swap. Можно ли как-нибудь объектам ветора поменять выделенные области памяти? P.S. Решение использовать указатель на вектор а не вектор я вижу. Это сообщение отредактировал(а) Userman - 11.7.2009, 17:28 |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
||||
|
||||
Proger10 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 16.12.2008 Репутация: нет Всего: нет |
А вот интересно.. почему класс называется вектором, а означает фактически - массив данных?
![]() |
|||
|
||||
Userman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 21.8.2008 Репутация: нет Всего: нет |
Значит поэлементного обмена не будет? И вектор-поле станет новым вектором очень быстро независимо от размера? Происходит проверка на то совпадают ли размеры и если совпадает, тогда меняются указатели на данные? |
|||
|
||||
zim22 |
|
|||
![]() depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
в небеса. *** математическая абстракция "вектор" в С++ реализована посредством класса std::valarray |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
а зачем проверять ? у одного вектора размер 1 байт у другого миллиард, поменяли указатели на области, теперь миллиард принадлежит первому, а один байт второму вектору. ![]() P.S. Естественно, помимо значений указателей на блок данных, меняется и переменная размер.. Это сообщение отредактировал(а) mes - 11.7.2009, 17:54 |
|||
|
||||
Userman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 21.8.2008 Репутация: нет Всего: нет |
ясно, спасибо
|
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
В линейной алгебре, вектор это элемент линейного пространства. Обычно вводится понятие базиса, и тогда вектор становится возможным представить в виде линейной комбинации — разложении по базису: http://ru.wikipedia.org/wiki/%D0%92%D0%B5%...B8%D0%BA%D0%B0) |
|||
|
||||
Userman |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 21.8.2008 Репутация: нет Всего: нет |
Сильно ли отличается по времени выполнения
от
|
||||||
|
|||||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Если оптимизация включена - нет. Прочитай про RVO Но мое мнение - лучше не писать код зависящий от оптимизатора. |
|||
|
||||
Userman |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 21.8.2008 Репутация: нет Всего: нет |
А объект возвращаемый функцией копирует то, что записано в return, или пока происходит работа с возвращённым значением, локальный объект функции, который возвращается, живёт?
сравним ли по скорости выполнения
с
P.S А ещё вопрос по поводу включенности оптимизатора. Если он выключен будет ли for(int i=0; i<n; i++) работать медленнее, чем for(int i=0; <n; ++i) ? Это сообщение отредактировал(а) Userman - 11.7.2009, 22:04 |
||||
|
|||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
Прошу прощения за оффтоп.
Вот мне постоянно не дает покоя одна мысль. Почему человек может прогить годами, и определенные вопросы так и некогда не задает. Другой человек только начинает прогить, и задает большинство этих вопросов. Почему так? п.с. вопрос из области философии? -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
andrew_121, Имхо, потому что одни стараются решить свои проблемы сами, пользуясь документацией и гуглем, a другие хотят, чтоб за них разжевали
![]() Это сообщение отредактировал(а) mes - 11.7.2009, 23:35 |
|||
|
||||
Userman |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 21.8.2008 Репутация: нет Всего: нет |
не только поэтому, мне, например, надо разобраться как сделать, чтобы это быстро работало, но сейчас нет времени на то, чтобы читать всё подряд пока не найду ответ на свой вопрос. И в поисковик неизвестно что вписать. "Как быстро присвоить одному вектору другой, когда другой не нужен?"
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |