Страница 1 из 1
а вот кроссоврдик
Добавлено: 24 апр 2007, 21:32
aissp
дано:
Код: Выделить всё
struct A {
string name;
string address;
};
struct B {
string name;
string address;
};
typedef vector<A> avec;
typedef vector<B> bvec;
....
void func(avec& aa) {
bvec bb;
internal_func_for_filling_bb(bb);
aa = ?????
}
Определения структур по сути одинаковы, однако ето совершенно две разные библиотеки которые вам надо скрестить. Как перевести вектор типа bvec в avec, чтобы другая библиотека его скушала более эффективно чем почленным копированием?
Код: Выделить всё
aa.resize(bb.size())
for(....) {
aa[i].name = bb[i].name;
...
}
вопросы про дурной дизайн с гневом отметаются

Добавлено: 24 апр 2007, 22:13
sz
A& operator=( A& a, const B& b )
{
// преобразуй, как нужно.
}
Добавлено: 24 апр 2007, 22:21
Marmot
А помоему, aissp-у хочется байтики за раз помувить, но чтоб красиво

Re: а вот кроссоврдик
Добавлено: 24 апр 2007, 22:25
ajkj3em
а чем собсно такая красота не устраивает ? -
Добавлено: 24 апр 2007, 22:39
aissp
И что вектор афффтаматически поменяет тип? Я ведь завтра проверю

На вскидку не вериться мне. Вопрос в том что у меня два контейнера и преобразовать надо не структуру в структуру а контейнер в контейнер. Я честно не проверял не до етого было - отсюда и вопросер
Не байтики мувить не хочу. Кривое решение у меня есть - сделать общий хидер и перекомпилять библиотеки - поскольк у меня есть источники, но оно идет в разрез с моим моральным кодексом
Есть еше текузее решение, поскольку на перформанс ето не влияет оставить цикл и не забивать свою голову, но хочется как лучше

Re: а вот кроссоврдик
Добавлено: 24 апр 2007, 22:46
Azazello
ajkj3em писал(а):а чем собсно такая красота не устраивает ? -
Только через reinterpret_cast, чтоб aissp не ругался

...
Edit: блин, вот так отвлекайся на телефон :S...
Добавлено: 24 апр 2007, 22:48
aissp
абсолютно не буду = бо задача реальная, просто решил проексплуатировать оьщественность, самому не думать не проверять некогда к сожалению и так зашиваюсь с редизайном одной программулки
а ну да естсественно это должно работать, бо говорящих жаб не быват. однако хочеться красивого решенница

чтоп взглянул и протащился

Добавлено: 24 апр 2007, 22:53
Froggy
aissp писал(а):.....бо говорящих жаб не быват.
быват...

Добавлено: 24 апр 2007, 22:55
Marmot
Froggy писал(а):aissp писал(а):.....бо говорящих жаб не быват.
быват...

Кто ее сюда впустил? Признавайтесь...
PS а я думал чужие тут не ходють...
Добавлено: 24 апр 2007, 22:58
Froggy
хочется иногда сюрреализьма...зайдешь сюда - ну ничегошеньки не понятно, ваще, зато возникает что-то странное, неземное.....

Добавлено: 24 апр 2007, 23:01
Marmot
Froggy писал(а):хочется иногда сюрреализьма...зайдешь сюда - ну ничегошеньки не понятно, ваще, зато возникает что-то странное, неземное.....

Ндаа, представляю как непосвященые воспринимают такую, например фразу:
чтобы другая библиотека его скушала более эффективно чем почленным копированием

Добавлено: 24 апр 2007, 23:11
Azazello
Marmot писал(а):Ндаа, представляю как непосвященые воспринимают такую, например фразу:...
Вспомнилось старое... Разговор двух adminов:
"-Я вчера весь день с "мамой" трахался...
- И как?
- Да сдохла, сука..."
Добавлено: 25 апр 2007, 11:53
sz
aissp писал(а):Есть еше текузее решение, поскольку на перформанс ето не влияет оставить цикл и не забивать свою голову, но хочется как лучше

А лучше оставить цикл. Все равно, никто не знает, что лучше для перформанса. Так что, лучше и не заморачиваться.
Когда я только пришел в EA, мне дали кусок кода и сказали, посмотри, что можно оптимизировать.
Ну я посмотрел - там битовые маски копируются при присвоении. Ага, думаю, сейчас я им референс каунтинг сделаю и избавлюсь от копирования. Ну сделал. Стало работать медленнее.
Потому что копирование все в кеше делается, а референс каунтинг делает if, да еще и по памяти скачет как горный козел.
В общем, я сейчас если вижу копирование, то думаю о замене на ссылку только если там больше килобайта, а в остальных случаях, даже и задумываться незачем.
Добавлено: 25 апр 2007, 12:06
aissp
Так и сделал, тока оформил функцией чтобы вернуться когда нибудь потом. Или не вернуться