2011-12-24 86 views
0

我想让我的代码比较两个向量。这两个载体将与相同数量的ints进行比较。如果redCups中的所有int均小于GreenCups,我希望它输出Yes。并且输出No如果redCups中的任何杯子都大于greenCups比较向量和打印布尔

我处理这个权利?

bool beb = true; 

    for (int i = 0; i < numCups; i++) 
    { 
     if (redCups[i]<greenCups[i]) 
     { 
      beb = false; 
     } 
    } 

    if (beb == true) 
    { 
     cout << "Yes" << endl; 
    } 
    if else (beb == false) 
     cout << "No" << endl; 
+2

当您尝试使用某些测试数据集时,您的代码是否正常工作?你的逻辑结构看起来不错,但你可能有一些测试倒退。 – 2011-12-24 02:56:48

回答

2

可以使用std::equal算法每对元素的两个容器进行比较。默认情况下,如果所有配对相等,则返回true,但是可以轻松地测试每对配对lessless_equal

bool beb = std::equal(redCups.begin(), redCups.end(), greenCups.begin(), std::less<int>()); 
0

的代码是好的,但有一个小错误,你想是的,如果所有redCups < greenCups,所以没有如有redCups> =greenCups。代码:

if (redCups[i] >= greenCups[i]) // you have to decide whether if its > or >= 
     { 
      beb = false; 
     } 

我想你有redCupsgreenCups前检查包含整数至少numCups

if (redCups.size() >= numCups && greenCups.size() >= numCups) 
{ 
    //your code : (bool beb = true; .................... cout << "No" << endl;) 
} 
+0

如果你想检查这个,你可以返回一个int:1为真,0为假,如果其中一个向量小于numCups,则返回-1。 – 2011-12-24 03:34:42

0
#include <iostream> 
#include <vector> 
using namespace std; 

int main(void) 
{ 
    vector<int> v1; 
    vector<int> v2; 

    v1.push_back(5); 
    v1.push_back(9); 
    v1.push_back(4); 
    v1.push_back(3); 
    v1.push_back(2); 

    v2.push_back(10); 
    v2.push_back(12); 
    v2.push_back(9); 
    v2.push_back(4); 
    v2.push_back(3); 

    bool beb = true; 
    for (unsigned int i=0; i<v1.size(); i++) 
     if(!(v1[i]<v2[i])) 
     { 
      beb = false; 
      break; 
     } 

    if (beb == true) 
     cout << "Yes" << endl; 
    else 
     cout << "No" << endl; 

    cin.get(); 
return 0; 
} 

我稍加修改你的代码,并得到了这个。它似乎为我工作。