【问题标题】:Find if an element exists in C++ array [duplicate]查找C ++数组中是否存在元素[重复]
【发布时间】:2017-08-14 17:39:53
【问题描述】:
#include <iostream>

float x[10], k;
int n, i;

cout<<"N= "; cin>>n;

for (i=0; i<n; i++){
    cout<<"x["<<i<<"]= ";
    cin>>x[i];
}

cout<<"Array's elements: ";
for (i=0; i<n; i++)
    cout<<x[i]<<", ";

cout<<endl<<"K= "; cin>>k;
for(i=0; i<n; i++)
    if(x[i]!=k){
        cout<<endl<<"K doesn't exist in array.";
        cout<<endl<<"K= "; cin>>k;
    }

我正在尝试查找数组中是否存在一个元素,如果它不存在,我想重新输入该元素并重复整个数组并检查它。 我的从一开始就没有得到它(i = 0)。

【问题讨论】:

  • 这很明显。仅检查第一个元素后,您不能声明该元素不在数组中。
  • 您写的是检查 所有 元素是否是您要查找的元素。如果你不想使用标准算法(你真的应该使用标准算法),你需要使用一个标志来查看它们是否匹配。
  • 为了避免找到匹配时标志从循环中中断,所以 i 仍然在索引位置。然后测试是否 i
  • 你觉得这种用学校学的数组的写法怎么样?它是好的还是我需要改进或者我可以简化它?

标签: c++ arrays


【解决方案1】:

标准库中有完美的功能 - std::any_of - 如果您只想知道是否存在某物。

如果您还需要访问找到的元素,则有std::findstd::find_if

如果您想知道某事物存在多少次,标准库已经为您提供了std::countstd::count_if

【讨论】:

  • 我为学校做了一些练习,我们还没有学过这种练习。但无论如何我都会尝试。谢谢!
【解决方案2】:

在标头&lt;algorithm&gt;中有一个叫做std::find的标准函数:

#include <iostream>
#include <algorithm>

int main() {
    int myarray[6]{10, 4, 14, 84, 1, 3};

    if (std::find(std::begin(myarray), std::end(myarray), 1) != std::end(myarray))
        std::cout << "It exists";
    else
        std::cout << "It does not exist";
    return 0;
}

Ideone

【讨论】:

    【解决方案3】:

    尝试创建一个名为 cnt 的新变量并像这样使用它 -

    for(i=0; i<n; i++)
        if(x[i]==k){
            ++cnt;
    
        }
    if (cnt==0)
        cout << "k has not occured";
    else
        cout<<"k has occured"<<cnt<<"times";
    

    【讨论】:

    • 你不需要把它们都数一遍。
    • 这有时有助于检查一个字母在一个单词或句子中出现了多少次
    • 这个工作一次,但是如果我想再次检查,我需要重复并重复这段代码......(你明白了)
    猜你喜欢
    • 2011-11-14
    • 2012-12-31
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多