Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > пересечение отображений


Автор: cthutq 21.7.2007, 21:36
есть класс
Код

enum INDEX
{
    A, B, C
}

class Item {
private :
    INDEX m_index;
    std::vector<unsigned short> m_vector;

public :
    INDEX index (void) const { reurn m_index; }
    const std::vector<unsigned short> vector (void) const { return m_vector; }
}


class Owner {
private :
    std::map <INDEX, Item> m_items;

public :
    const Item& operator [] (INDEX index);
}


теперь есть вектор владельцев
Код

std::vector<Owner> owners;


хотелось бы получить Owner, который является пересечением массива owners, которые получены за счет пересечения Owner[index]. 

Автор: JackYF 21.7.2007, 23:32
Цитата(cthutq @  21.7.2007,  21:36 Найти цитируемый пост)
который является пересечением массива owners, которые получены за счет пересечения Owner[index].  


по идее, тебе поможет std::set_intersection, которая применяется последовательно сначала к первым двум элементами вектора owners, затем еще раз пересечение с третьим элементом и так до конца. Кто останется в пересечении конечном - тот и выиграл smile

Автор: cthutq 21.7.2007, 23:38
Цитата(JackYF @  21.7.2007,  23:32 Найти цитируемый пост)
по идее, тебе поможет std::set_intersection, которая применяется последовательно сначала к первым двум элементами вектора owners, затем еще раз пересечение с третьим элементом и так до конца. Кто останется в пересечении конечном - тот и выиграл

а как быть если ключи у  отображения не совпадают.

И почему std::set_intersection принимает итераторы 2-х контейнеров и итератор выходного. Тоесть 3 контейнера.
А можно ли обойтись двумя. Тоесть первый и есть результирующий

Автор: JackYF 22.7.2007, 00:04
Цитата(cthutq @  21.7.2007,  23:38 Найти цитируемый пост)
а как быть если ключи у  отображения не совпадают.

ээ... а зачем они тогда нужны?


Цитата(cthutq @  21.7.2007,  23:38 Найти цитируемый пост)
А можно ли обойтись двумя. Тоесть первый и есть результирующий 

а с чем ты пересекать будешь?

Автор: cthutq 22.7.2007, 01:54
Цитата(JackYF @  22.7.2007,  00:04 Найти цитируемый пост)
ээ... а зачем они тогда нужны?

ну просто в одном Owner (A, B, C), а в другом Owner (B, C).
А нужны для доступа по INDEX. Если его нет, то возвращается пустой Item.

Цитата(JackYF @  22.7.2007,  00:04 Найти цитируемый пост)
а с чем ты пересекать будешь? 

не понял ?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)