2015-11-09 73 views
0

我有兩個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函數或somthing?

回答

10

矢量的詞彙順序是足夠:

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)

+0

很多感謝小號!我想到了它,但我甚至沒有嘗試過。我認爲在C++中有這樣的東西太奢侈了!再次感謝 –

+0

@juanchopanza:您可以重新顯示您的答案,與我的答案相反,如{1,9} <{2,2}'... – Jarod42

+0

但是,如果兩種尺寸都保證爲等於。不是嗎? –