c++ - 如何比较 vector 和数组?

标签 c++ arrays vector compare containers

我想比较 vector 和数组。 vector 和 array 中的元素顺序不同,未排序并且可以重复。例如。

下面是一样的:

vector<int> lvector = {5,7,3,1,2,7};
int larray[6] = {3,5,1,7,2,7}

下面,不一样:

vector<int> lvector = {5,7,3,1,2,7,5};
int larray[7] = {3,5,1,7,2,7,3}

和这样的东西也不一样:

vector<int> lvector = {1,1,1,1,2,2};
int larray[6] = {1,1,1,1,1,2}

现在我需要检查 vector 和 array 是否有相同的元素。我不能修改 vector 和数组,但我可以创建一个新容器并将元素从 vector 和数组复制到这个新容器,然后将它们进行比较。我问这个,因为我想以高效的方式做到这一点。谢谢。

最佳答案

这是 soon 提出的变体:

#include <iostream>
#include <unordered_set>
#include <vector>


int main()
{
    std::vector<int> v{5, 7, 3, 1, 2, 7};
    int arr[] = {3, 5, 1, 7, 2, 7};

    std::vector<int> mv(std::begin(v), std::end(v));
    std::vector<int> ma(std::begin(arr), std::end(arr));
    std::sort(mv.begin(), mv.end()) ;
    std::sort(ma.begin(), ma.end()) ;

    std::cout << "Are equal? " << (mv == ma) << std::endl;
    return 0;
}

关于c++ - 如何比较 vector 和数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30883069/

相关文章:

c++ - 尝试编译 C++ 应用程序,找不到头文件

javascript - 释放大数组内存的正确方法是什么

JavaScript - 显示数组的键和值

matlab - octave/matlab - 将字符串转换为唯一单词矩阵

c++ - 是否可以将 vector 的一部分作为 vector 发送给函数?

c++ - 如何将函数分配给采用 void * 类型参数的函数指针?

C++:矩阵类

c++ - 以 TIFF 格式保存一堆图像

javascript - 查找一个数字的所有排列而不重复(为清楚起见进行了编辑)

c++ - 将 Vector 作为参数传递给另一个类构造函数 C++