Re[3]: Можно использовать вектор как массив для возврата зна
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 03.06.10 21:31
Оценка:
Здравствуйте, dilmah, Вы писали:

D>не вижу никакого бенефита в такой форме. Бенефит был бы, если бы функция стала шаблонной, а если жестко прописаны int*, то какая разница begin+size или begin+end?


Ну, бенефиты в том, что если SomeFunc тоже наша функция, то для возврата значения можно использовать std алгоритмы. Хотя из begin+size тоже самое можно получить
Маньяк Робокряк колесит по городу
Re[5]: Можно использовать вектор как массив для возврата зна
От: Кодт Россия  
Дата: 03.06.10 22:55
Оценка: 8 (1)
Здравствуйте, Marty, Вы писали:

M>::std::vector< colorref_vector, IPoolAllocator<colorref_vector> >
M>   faceColors( IPoolAllocator<colorref_vector>(poolPtr) );
//   ~~~~~~~~~~  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~
//   имя функции      тип аргумента              имя аргумента


К>>Трюк с лишними скобками знаешь?

::std::vector< colorref_vector, IPoolAllocator<colorref_vector> >
   faceColors( ( IPoolAllocator<colorref_vector>(poolPtr) ) );
//             ~                                          ~


Дистиллированный пример
http://codepad.org/LsRB3kwk
Перекуём баги на фичи!
Re[2]: Можно использовать вектор как массив для возврата зна
От: GhostCoders Россия  
Дата: 04.06.10 08:08
Оценка:
Здравствуйте, B7_Ruslan, Вы писали:

B_R>А почему бы просто вектор по ссылке не передать?

B_R>А если функцию изменить нельзя, то наверно лучше
B_R>
B_R>SomeFunc( &(vec.front()), vec.size() );
B_R>


Мне кажется это не совсем есть гуд. Если этот метод будет в другой библиотеке (статической или же динамической, без разницы),
то возможна мешанина с разными кучами (например, std::vector<> был инициализирован в одной куче 10 элементами, а другой он будет расширен до 20) —
как результат падание на следующей функции работащией с кучей (с выдачей сообщения что C Runtime heap поврежден).
Третий Рим должен пасть!
Re[3]: Можно использовать вектор как массив для возврата зна
От: B7_Ruslan  
Дата: 07.06.10 10:53
Оценка:
Здравствуйте, GhostCoders, Вы писали:

GC>Мне кажется это не совсем есть гуд. Если этот метод будет в другой библиотеке (статической или же динамической, без разницы),

GC>то возможна мешанина с разными кучами (например, std::vector<> был инициализирован в одной куче 10 элементами, а другой он будет расширен до 20) —
GC>как результат падание на следующей функции работащией с кучей (с выдачей сообщения что C Runtime heap поврежден).

А какую литературу можно почитать на эту тему?
Re[4]: Можно использовать вектор как массив для возврата зна
От: GhostCoders Россия  
Дата: 07.06.10 15:16
Оценка:
Здравствуйте, B7_Ruslan, Вы писали:

GC>>Мне кажется это не совсем есть гуд. Если этот метод будет в другой библиотеке (статической или же динамической, без разницы),

GC>>то возможна мешанина с разными кучами (например, std::vector<> был инициализирован в одной куче 10 элементами, а другой он будет расширен до 20) —
GC>>как результат падание на следующей функции работащией с кучей (с выдачей сообщения что C Runtime heap поврежден).

B_R>А какую литературу можно почитать на эту тему?

Какую литературу не знаю, так как проверенно на собственном опыте. Но думаю что-нибудь про архитектуру процессов, потоков, более
общее, так как "Программирование для Windows" Рихтера, "Inside COM" (автора не помню, хоть COM тут напрямую не завязан, но книжка хорошая,
позволяет заглянуть как работает Windows).

Сам бы хотел просмотреть подобную литературу.
Третий Рим должен пасть!
Re[6]: Можно использовать вектор как массив для возврата зна
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 08.06.10 19:40
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Дистиллированный пример

К>http://codepad.org/LsRB3kwk

Спасибо/ Знал, но забыл
Маньяк Робокряк колесит по городу
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.