如何检查数组中的值

时间:2014-12-09 12:07:50

标签: c++ arrays

我已使用

将4个数字输入数组
for (int i=0;i<4;i++)
{
    cin >> choice[i];
}

我需要检查我是否已将数字1,3,4,6(以任何顺序)输入数组

例如: -

if choice[0] == 1 && choice[1] == 3 && choice[2] == 4 && choice[3] == 6

else if ........ 1,3,6,4

else if..........1,6,3,4

else if.......1,6,4,3

else if......1,4,6,3

else if......1,4,3,6

....
....

else if.....6,4,3,1

这种类型的检查使我的代码太大了。

请用其他方式帮助我

3 个答案:

答案 0 :(得分:5)

使用std::is_permutation

int choice[4];

for (int i=0;i<4;i++)
{
    cin >> choice[i];
}

std::cout << std::is_permutation(std::begin(choice), std::end(choice), std::vector<int>{1, 3, 4, 6}.begin()) << std::endl;

答案 1 :(得分:3)

bool count1=false;
bool count2=false;
bool count3=false;
bool count4=false;

for (int i=0;i<4;i++)
{
cin >> choice[i];
if(choice[i]==1) count1==true;
else if(choice[i]==3) count2=true;
else if(choice[i]==4) count3=true;
else if(choice[i]==6)  count4=true;
}

if(count1 && count2 && count3 && count4) cout<<endl<<"yes, it is!";

答案 2 :(得分:0)

您可以使用以下内容:

std::vector<int> choice(4);
for (int i = 0; i < 4; ++i)
{
    std::cin >> choice[i];
}

std::sort(std::begin(choice), std::end(choice));
if (choice == std::vector<int>{1, 3, 4, 6}) { // 1, 3, 4, 6 should be sorted.
    // equal
}

Live example