我想在std::vector
中也存在的std::map
中每个元素的 item (以.first
或键)。
我如何最好地以一种有效的方式解决这个问题?
答案 0 :(得分:1)
我将执行以下操作,该操作将具有 O(N log(n)),其中N =向量的大小,n =地图的大小。 这不需要双循环。
std::vector<int> vec{1,2,3,4,5,6,7,8};
std::map<int, int> myMp{{1,2}, {2,2}, {5,2}, {6,2} };
std::vector<std::vector<int>::iterator> v_itr; // iterators
for(auto itr = vec.begin(); itr != vec.end(); ++itr)
{
auto mp_find = myMp.find(*itr); // log(n) where n = myMp.size()
if(mp_find != myMp.cend()) v_itr.emplace_back(itr);
}