比较矢量和打印布尔

时间:2011-12-24 02:54:38

标签: c++ vector for-loop

我想让我的代码比较两个向量。两个向量将与相同数量的int s进行比较。如果Yes中的所有int小于redCups,我希望它输出GreenCups。如果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;

3 个答案:

答案 0 :(得分:2)

您可以使用std::equal算法比较两个容器中的每对元素。默认情况下,如果所有对都相等,则返回true,但很容易测试lessless_equal的每对。

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

答案 1 :(得分:0)

代码很好,但有一点错误,如果所有redCups&lt; greenCups,如果有redCups &gt; = 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;)
}

答案 2 :(得分: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;
}

我稍微修改了你的代码并得到了这个。它似乎对我有用。