【发布时间】:2021-01-04 21:18:22
【问题描述】:
我面临比较两个 int 数据类型的 c++ 数组的任务。我特别不能使用我自己的任何循环(for、while),并鼓励使用 STL 函数。我找到了std::mismatch(),这似乎是我想要的,但我无法让它与基本数组一起使用。
这是我的代码:
#include <iostream> // cout
#include <algorithm> // std::mismatch
#include <utility> // pair
int main()
{
int a[10] = {1,3,5,7,9,11,13,15,17,19};
int b[10] = {2,4,6,8,10,12,14,16,18,20};
std::pair<int, int> result =
std::mismatch(a, a + 9, b);
std::cout<<result.first<<" "<<result.second<<std::endl;
return 0;
}
我收到以下错误:
错误:请求从“std::pair”转换为非标量类型“std::pair”
我对 C++ 很陌生,所以我真的不知道这是什么意思。
【问题讨论】:
-
这并没有解决问题,但是 10 个元素的数组的结束迭代器是
a + 10,而不是a + 9。不过,更好的是使用std::begin(a)、std::end(a)和std::begin(b)。这样,如果您更改a中的元素数量,您仍然会得到正确的结束迭代器。