我有两个vectors的integers.我想检查所有第一个vector元素是否小于或等于另一个元素vector.
std::vector<int> v1{1,2,3,4,5};
std::vector<int> v2{8,8,8,8,8};
auto check(true);
for(size_t i=0;i<v1.size();++i){
if(v1[i]>v2[i]){
check=false;
break;
}
}
if(check){
std::cout << "OK";
}
Run Code Online (Sandbox Code Playgroud)
有没有更简洁的方法来做它像std函数或somthing?
Jar*_*d42 11
矢量的词法顺序就足够了:
const bool check = v1 <= v2;
Run Code Online (Sandbox Code Playgroud)
你可以使用(在C++ 14中)
const bool ok = std::equal(std::begin(v1), std::end(v1),
std::begin(v2), std::end(v2),
[](int a, int b)->bool {return a <= b; });
Run Code Online (Sandbox Code Playgroud)
在C++ 11中,您必须size手动检查并删除std::end(v2)