c++ - 我的 vector 相交函数有什么问题?

标签 c++

我有一个接受两个 vector v1 和 v2 的函数。比较两者中的元素,并应该从两者中返回公共(public)元素。两个 vector 中都有 5 个字符串。

不过,它并没有像预期的那样工作。例如,我为 v1 输入:

dog cat lizard snake pig

v2 有:

cat sheep cow snake fish

结果是:

snake

我怎样才能修复它,使输出看起来像下面这样?

cat snake

我的代码

#include <iostream>
#include <vector>
#include <string>
using namespace std;
const int CAPACITY = 5;

template <typename t>
vector <t> inter(const vector <t> & v1, const vector <t> & v2)
{
    vector <t> v3;
    for(int i = 0; v1.size(); i++ )
    {
       for(int j= 0; v2.size(); j++)
       {
            if (v1[i] == v2[j])
            {
                v3.push_back(v1[i]);
            }
       }
    }
    return v3;

}

int main()
{
    vector<string> vec1;
    string a;
    cout << "Enter five stings for vector 1 \n"<< endl;
    for(int i = 0; i< CAPACITY; i++ )
    {
        cin >> a;
        vec1.push_back(a);
    }
    vector<string> vec2;
    string b;
    cout << "Enter five stings for vector 2 \n"<< endl;
    for(int i = 0; i< CAPACITY; i++ )
    {
        cin >> b;
        vec2.push_back(b);
    }

    cout<<inter(vec1, vec2);
}

最佳答案

一种选择是对两个 vector 进行排序,然后使用 std::set_intersection .

关于c++ - 我的 vector 相交函数有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14843257/

相关文章:

c++ - 在 gmock 中将自定义值设置为 void 指针

c++ - 有没有办法可以同时运行 3 个 CreateWindow 函数?

c++ - 如何编写一个在没有任何条件的情况下也有条件(真假)的通用仿函数?

c# - 接听电话 Windows Phone 8

c++ - 多重继承中没有匹配函数

c++ - 将文件数据从服务器返回到客户端 - reg

C++ 异步与 OpenMP 任务

c++ - 返回一个 void* 数组

c++ - 在 tbb::parallel_for 中使用 tbb::queueing mutex 的简单示例程序无法编译

c++ - 二叉树的深度复制构造函数