【问题标题】:Check if elements in vector less are than other vector检查向量中的元素是否小于其他向量
【发布时间】:2015-11-09 08:32:12
【问题描述】:

我有两个vectorsintegers。我想检查所有第一个 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";
}

有没有像 std 函数或类似的更简洁的方法?

【问题讨论】:

    标签: c++ c++11 vector


    【解决方案1】:

    向量的词法顺序就足够了:

    const bool check = v1 <= v2;
    

    你可以使用(在 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; });
    

    在 C++11 中,您必须手动检查 size 并删除 std::end(v2)

    【讨论】:

    • 非常感谢!我想过,但我什至没有尝试过。我认为在 C++ 中拥有这样的东西太奢侈了!!再次感谢
    • @juanchopanza:您可以重新显示与我相反的正确答案{1, 9} &lt; {2, 2}...
    • 但如果保证两个尺寸相等,您的第一个解决方案是 100%。不是吗?
    • @HumamHelfawi: {1, 9} &lt;= {2, 2} 是真的,而你期望是假的。
    猜你喜欢
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-23
    • 2014-02-05
    • 1970-01-01
    相关资源
    最近更新 更多