나는 경험이 제한적인 C ++ 프로그래머입니다.
를 사용하여 STL map
일부 데이터를 저장하고 조작 한다고 가정하면 두 가지 데이터 구조 접근법 사이에 의미있는 차이 (성능도 있음)가 있는지 알고 싶습니다.
Choice 1:
map<int, pair<string, bool> >
Choice 2:
struct Ente {
string name;
bool flag;
}
map<int, Ente>
구체적 struct
으로 간단한 대신에 오버 헤드가 pair
있습니까?
std::pair
는 템플릿 입니다. std::pair<string, bool>
구조체입니다.
pair
의미가 전혀 없습니다. 미래에 당신을 포함하여 당신의 코드를 읽는 사람 e.first
은 당신이 그것을 명시 적으로 지적하지 않으면 그 이름이 무엇 인지 알 수 없습니다. 나는 확고한 신자가 오전 pair
에 매우 가난하고 게으른 추가했다 std
, 그것은 생각되었다 때는 아무도 생각하지 않았다 "하지만 언젠가, 모든 사람들이이를 사용하려고하는 모든 것을 두 가지이며, 아무도 알 수 없습니다 어떤 사람의 코드 수단 ".
map
반복자가 유효한 예외가 아닌 것과 같은 것은 나쁜 일 입니다. ( "first"= key and "second"= value ... really std
std::pair
는 구조체입니다.