Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с set_intersection

562
11 июня 2006 года
tarekon
175 / / 19.08.2003
Есть такой кусок кода:
Код:
vector<TGlobalIndex> one, two, res;

    one.push_back( 10 );
    one.push_back( 11 );
    one.push_back( 9 );

    two.push_back( 8 );
    two.push_back( 9 );
    two.push_back( 6 );

    cout << "vector one:" << endl;
    printIndex( one );
    cout << "vector two:" << endl;
    printIndex( two );

    cout << "Sorting..." << endl;
    sort( one.begin(), one.end() );
    sort( two.begin(), two.end() );

    cout << "vector one:" << endl;
    printIndex( one );
    cout << "vector two:" << endl;
    printIndex( two );

    res.reserve( 3 );
    cout << "result:" << endl;
    set_intersection( one.begin(), one.end(), two.begin(), two.end(), res.begin() );
    printIndex( res );


При работе на экран выводится:
Код:
vector one:
Hi: 0 Low: 10
Hi: 0 Low: 11
Hi: 0 Low: 9
vector two:
Hi: 0 Low: 8
Hi: 0 Low: 9
Hi: 0 Low: 6
Sorting...
vector one:
Hi: 0 Low: 9
Hi: 0 Low: 10
Hi: 0 Low: 11
vector two:
Hi: 0 Low: 6
Hi: 0 Low: 8
Hi: 0 Low: 9
result:

Вопрос: почему в результате не получается получить пересечение векторов? Вроде бы сортировка работает - значит, с операцией '<' проблем нет. Да и вообще эта операция была тщательно проверена. Но почему же тогда set_intersection возвращает пустоту? Или я его неправильно использую?

P.S. Вдогонку код для printIndex()
 
Код:
void printIndex( const vector<TGlobalIndex>& inp )
{
    vector<TGlobalIndex>::const_iterator iter;
    for( iter = inp.begin(); iter != inp.end(); ++iter ) {
        cout << "Hi: " << iter->DI_Hi << " Low: " << iter->DI_Low << endl;
    }
}

Вроде бы в нем ничего такого нет...

P.P.S. TGlobalIndex - это класс восьмибайтовых целых чисел. Hi - старшее двойное слово, Low - младшее.
562
11 июня 2006 года
tarekon
175 / / 19.08.2003
Блин, нашел ошибку: вместо res.reserve() надо юзать res.resize().
Вот тупость...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог