我想让我的代码比较两个向量。两个向量将与相同数量的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;
答案 0 :(得分:2)
您可以使用std::equal
算法比较两个容器中的每对元素。默认情况下,如果所有对都相等,则返回true
,但很容易测试less
或less_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;
}
我认为您在redCups
和greenCups
包含至少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;
}
我稍微修改了你的代码并得到了这个。它似乎对我有用。