我有两个双打阵列。将对一个数组进行排序,之后我想检查原始数组的每个元素是否仍在排序数组中。我使用了C ++的find()函数,但是这个指针只指向找到的第一个元素,例如:如果你有原始的数组{1,1,1,1},那么排序的是{1,1,1,1}但是find()只指向第一个元素。
我是否真的需要遍历原始数组并计算元素出现的次数,然后遍历已排序的数组并执行相同的操作?
答案 0 :(得分:2)
由于您只想检查数组是否已正确排序,您可以使用std::sort
对其他数组进行排序,该数组可以正常工作,然后比较结果:
your_sort(first_array);
std::sort(second_array.begin(),second_array.end());
bool sort_worked = std::equal(first_array.begin(),first_array.end(),
second_array.begin());
万一你不知道:
每个标准库容器都有begin()
和end()
成员函数。
您应该始终使用它们,如果您有充分的理由,请使用std::vector
作为默认数据结构,使用另一个标准容器。不要使用C风格的数组。
答案 1 :(得分:0)
find()函数返回指向第一次出现的指针 范围内的所需元素。
std::find(first, last, value_to_be_searched)
如果找不到该元素,则返回' last'。你可以循环你的 第一个数组,只需检查每个元素的find函数 返回与“最后”不同的内容在第二个阵列上调用时。