std::map에서 벡터로 키 또는 값 검색
std::map에서 모든 키 또는 값을 벡터로 검색 벡터는 일반적인 작업이지만 std::map 자체에는 이 목적을 위한 명시적인 멤버 함수가 부족합니다. 한 가지 접근 방식은 제공된 코드에 설명된 대로 사용자 정의 펑터를 정의하는 것입니다.
struct RetrieveKey { template <typename T> typename T::first_type operator()(T keyValuePair) const { return keyValuePair.first; } }; map<int, int> m; vector<int> keys; // Retrieve all keys transform(m.begin(), m.end(), back_inserter(keys), RetrieveKey()); // Dump all keys copy(keys.begin(), keys.end(), ostream_iterator<int>(cout, "\n"));
이 솔루션은 지도 외부의 데이터를 조작하는데, 이는 경우에 따라 이상적이지 않을 수 있습니다. 간단한 for 루프를 활용하는 대체 접근 방식은 더 명확하고 명시적인 솔루션을 제공합니다.
map<int, int> m; vector<int> key, value; for (auto it = m.begin(); it != m.end(); ++it) { key.push_back(it->first); value.push_back(it->second); cout << "Key: " << it->first << endl; cout << "Value: " << it->second << endl; }
이러한 방식으로 맵을 반복하면 키와 값을 모두 벡터 컨테이너로 직접 추출할 수 있습니다.
Boost 라이브러리를 사용하는 경우 또 다른 옵션은 프로세스를 더욱 단순화합니다.
map<int,int> m; pair<int,int> me; // what a map<int, int> is made of vector<int> v; BOOST_FOREACH(me, m) { v.push_back(me.first); cout << me.first << "\n"; }
이 버전은 간결합니다. 읽을 수 있으며 검색 프로세스에 대한 명시적인 제어를 제공합니다. 가장 적절한 방법을 선택하는 것은 개발자의 특정 요구와 선호도에 따라 다릅니다.
위 내용은 std::map의 키와 값을 벡터로 효율적으로 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!