如果我有一个值向量并想要检查它们是否完全相同,那么在C++中有效地执行此操作的最佳方法是什么?如果我用R之类的其他语言进行编程,我的思维方式就是只返回容器的唯一元素,然后如果唯一元素的长度大于1,我知道元素不能相同.在C++中,这可以这样做:
//build an int vector
std::sort(myvector.begin(), myvector.end());
std::vector<int>::iterator it;
//Use unique algorithm to get the unique values.
it = std::unique(myvector.begin(), myvector.end());
positions.resize(std::distance(myvector.begin(),it));
if (myvector.size() > 1) {
std::cout << "All elements are not the same!" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
然而,阅读有关互联网和SO,我看到其他答案,如使用集合或find_if算法.那么最有效的方法是什么?为什么?我想我的不是最好的方法,因为它涉及排序每个元素然后调整向量的大小 - 但也许我错了.
谢谢,本.
检查数组的所有元素(首选整数数组)是否相等的最快方法是什么.直到现在我一直在使用以下代码:
bool check(int array[], int n)
{
bool flag = 0;
for(int i = 0; i < n - 1; i++)
{
if(array[i] != array[i + 1])
flag = 1;
}
return flag;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个程序,使用for循环检查数组中的所有值是否相等但我无法找出if语句的方法来检查数组中的每个值是否相等而不是不断重复"if a[i] == a[1] && a[i] == a[0]"等等.我不想这样做,因为我希望它适用于任何大小的任何数组.任何帮助深表感谢!
for (unsigned i = 0; i < val; i++){
if (a[i] == a[0])
return true;
else
return false;
}
Run Code Online (Sandbox Code Playgroud)