注册 登录
编程论坛 C++教室

想了很久,就是想不明白哪里出错了,关于find count函数的,基础代码

叶纤 发布于 2020-04-02 10:01, 1820 次点击
程序代码:

#include <iostream>
#include<vector>
#include<string_view>
#include<array>
#include<algorithm>
using namespace std;

 struct Man

 { string_view a{};
    int grad{};

 };

 struct arrayW

 {
   vector<Man>arra{};//变成一个数组
};

 bool strnum(string_view str)

 {
     return (str.find("jk") != std::string_view::npos);//查找字符
}
int main()
{

    arrayW arrau;//{1,67,2,34,3,78};
     arrau.arra. resize(3);
     arrau.arra[0]={" kjk",67};//输入数组
    arrau.arra[1]={" dfd",671};
    arrau.arra[2]={" fdd",673};

  for(auto tem:arrau.arra)
    {cout<<" "<<tem.a<<" "<<tem.grad<<"  ";
  }
auto found={find_if(arrau.arra.begin(),arrau.arra.end(),strnum)};//返回发现的结果
auto countnum={count_if(arrau.arra.begin(),arrau.arra.end(),strnum)};//在第几位被发现
if(found==arrau.arra.end())//这里有错误
     {cout<<"未识别";
   }
else
{
    cout<<*found;
    cout<countnum;
}

}


变成结构体的就有点晕
3 回复
#2
rjsp2020-04-02 11:05
程序代码:
#include <iostream>
#include <vector>
#include <string_view>
#include <array>
#include <algorithm>
using namespace std;

struct Man
{
    std::string_view a;
    int grad;
};

struct arrayW
{
    vector<Man>arra;
};

bool strnum( const Man& str)
{
    return (str.a.find("jk") != std::string_view::npos);
}

int main()
{
    arrayW arrau;
    arrau.arra.resize(3);
    arrau.arra[0] = { " kjk",67 };
    arrau.arra[1] = { " dfd",671 };
    arrau.arra[2] = { " fdd",673 };

    for (auto tem : arrau.arra)
    {
        cout << " " << tem.a << " " << tem.grad << endl;
    }
    auto found = find_if(arrau.arra.begin(),arrau.arra.end(),strnum);
    auto countnum = count_if(arrau.arra.begin(),arrau.arra.end(),strnum);
    if (found == arrau.arra.end())
    {
        cout << "未识别";
    }
    else
    {
        cout << found->a << endl;
        cout << countnum << endl;
    }
}
#3
叶纤2020-04-02 12:29
啊,找了半小时,最让我无语的是初始化的时候
auto found={find_if(arrau.arra.begin(),arrau.arra.end(),strnum)};
居然不能加=号,最最最让我无语的是我cout还少打印一个<
难以置信的是:我看来那么多遍居然一次都没发现,
#4
叶纤2020-04-02 13:45
大大,谢谢你,之前看见很多人会写->,一直不明白这是什么意思,今天明白了,如果按照我的代码写我估计会写
(*found).a,根本就想不到这个类似箭头的符号,感谢您的耐心指导
1