在std :: vector中查找元素,该元素也存在于std :: map

时间:2018-06-21 16:41:24

标签: c++ c++11 iterator stdvector stdmap

我想在std::vector中也存在的std::map中每个元素的 item (以.first)。

我如何最好地以一种有效的方式解决这个问题?

1 个答案:

答案 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);
   }