은 내가 비교 동등성을 위해 사용하도록 설정 하시겠습니까 하나의 필드를 포함하는 구조체를 가지고 있고, 메타 데이터 등 기타 분야 :
:struct read_tag{
unsigned int read_id; // want std::set to use this
int offset; // metadata
bool orientation; // metadata
};
내가 일을 할 수있는 펑이
struct read_tag_compare {
bool operator() (const read_tag &a, const read_tag &b) const {
return a.read_id > b.read_id
}
};
및 decl. 필요한 설정은
std::set<read_tag, read_tag_compare> block;
으로 설정되었습니다. 문제는 다음과 같습니다.
std::set<read_tag, read_tag_compare>
을 포함하는 세트를 만드는 방법은 무엇입니까? 나는 이런 식으로 뭔가 싶어 :
std::set< std::set<read_tag, read_tag_compare> > blocks;
blocks.insert(a_block); // comp error
을하지만 이것은 나에게 매우 큰, 그리고 해독하기 어려운 오류가 있습니다.
내부 집합이 어떻게 비교되는지를 반복적으로 확인하고 이것을 외부 집합으로 확장한다고 생각했습니다. 모든 일은 가장 안쪽 집합에 대한 비교기를 정의하는 것입니다. - 5.3 그것은 ++ 내 g와 오류없이 컴파일 D
아니야, 동등성에 의해 정의 된'blocks'에서 하나의'std :: set'만 원하기 때문에. –
두 세트의 메타 데이터가 동일하지 않은 경우에는주의하지 않습니다. 두 세트가'read_tag '에 관해서 모두 같은'read_tag'을 포함한다면 말입니다.read_id' 메타 데이터는 수치 적 의미로는 동일하지 않지만 나중에 동일한 정보를 유도 할 수 있습니다. 그래서 두 세트 중 하나를 가져갈 수는 있지만 두 가지를 원하지 않습니다 –