gpt4 book ai didi

c++ - 在 C++ 中检查 vector 的所有元素是否相等

转载 作者:IT老高 更新时间:2023-10-28 12:55:12 27 4
gpt4 key购买 nike

如果我有一个值 vector 并且想要检查它们是否都相同,那么在 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;
}

但是在互联网上阅读时,我看到了其他答案,例如使用 setfind_if 算法。那么最有效的方法是什么,为什么?我想我的方法不是最好的,因为它涉及对每个元素进行排序,然后调整 vector 的大小 - 但也许我错了。

最佳答案

您不需要使用 std::sort。可以用更简单的方式完成:

if ( std::adjacent_find( myvector.begin(), myvector.end(), std::not_equal_to<>() ) == myvector.end() )
{
std::cout << "All elements are equal each other" << std::endl;
}

关于c++ - 在 C++ 中检查 vector 的所有元素是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20287095/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com