c++ - 找到另一个 map 内 vector 的公共(public)元素

标签 c++

亲爱的大家, 我有一张 map ,定义为 map<int, vector<int> > my_map .因此,例如它看起来如下所示,

my_map=
0 1 2 6 5 4
1 0 2 3 4 5
2 0 1 4
3 1
4 1 2 0 7 5 6
5 1 0 6 4
6 0 5 4
7 4

vector<int> element_common(map<int, vector<int> > &my_map, int s1, int s2){
     vector<int> common2;
     vector<int> first_vector=my_map[s1];     
     vector<int>::iterator snd_vector_begin= my_map[s2].begin();
     vector<int>::iterator snd_vector_end= my_map[s2].end();          
     for (vector<int>::iterator any=first_vector.begin();
                            any!=first_vector.end();
                            any++){            
         // check if any is in other_list
         vector<int>::iterator any_in_snd_vector_iterator= find (snd_vector_begin,snd_vector_end, *any);            
         if(any_in_snd_vector_iterator==snd_vector_end){
            common2.push_back(*any); 
            }
         }
     return common2;

我在函数上方编写了一个函数,以从与 2 个给定键相关的 vector 部分获取公共(public)元素。当键等于 s1 和 s2 时,即 s1=1 和 s2=4。那么我的函数应该给我 0,2,5。但我得到了 3,4。请帮助我纠正我的功能。

最佳答案

如果您可以保证您的 vector 已排序,那么您可以将性能从 O(mn) 显着提高到 O(m + n):

std::vector<int> common;
std::set_intersection(vec1.begin(), vec1.end(),
                      vec2.begin(), vec2.end(),
                      std::back_inserter(common));

关于c++ - 找到另一个 map 内 vector 的公共(public)元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5671324/

相关文章:

c++ - 变量在传递给共享库函数时没有相同的值

c++ - 空指针代替 int 类型的指针

c++ - 无法在Qt中调用静态方法

c++ - CMake if(VARIABLE LESS 22) - 如果 VARIABLE 不存在怎么办?

c++ - 如何为 mac 创建应用程序?

c++ - std::unordered_map<std::String, myClass*> - std::unordered_map::erase() 是否调用 myClass 的 DTor?

c++ - 使用多个着色器时的驱动程序错误

c++ - 如何通过遍历数组来读取和存储实例的值?

c++ - 错误 : conversion from long int to non-scalar type, 将迭代器与 null 进行比较

c++ - TinyXML 以及标签和格式问题