• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++在成员函数中使用STL的find_if函数实例

C++在成员函数中使用STL的find_if函数实例

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++ stl,c++stl基础及应用,c++ stl容器,c++ stl标准程序库,c++ stl教程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了C++在成员函数中使用STL的find_if函数的方法。分享给大家供大家参考。具体方法分析如下:

一般来说,STL的find_if函数功能很强大,可以使用输入的函数替代等于操作符执行查找功能(这个网上有很多资料,我这里就不多说了)。

比如查找一个数组中的奇数,可以用如下代码完成(具体参考这里:http://www.cplusplus.com/reference/algorithm/find_if/):

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

bool IsOdd (int i) {
 return ((i%2)==1);
}

int main () {
 vector<int> myvector;
 vector<int>::iterator it;

 myvector.push_back(10);
 myvector.push_back(25);
 myvector.push_back(40);
 myvector.push_back(55);

 it = find_if (myvector.begin(), myvector.end(), IsOdd);
 cout << "The first odd value is " << *it << endl;

 return 0;
}

</div>

运行结果:

The first odd value is 25
</div>

如果把上述代码加入到类里面,写成类的成员函数,又是什么效果呢?

比如如下类代码:

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

class CTest
{
public:
 bool IsOdd (int i) {
  return ((i%2)==1);
 }

 int test () {
  vector<int> myvector;
  vector<int>::iterator it;
  myvector.push_back(10);
  myvector.push_back(25);
  myvector.push_back(40);
  myvector.push_back(55);
  it = find_if (myvector.begin(), myvector.end(), IsOdd);
  cout << "The first odd value is " << *it << endl;
  return 0;
 }
};
int main()
{
 CTest t1;
 t1.test();
 return 0;
}

</div>

会出现类似下面的错误:

error C3867: 'CTest::IsOdd': function call missing argument list; use '&CTest::IsOdd' to create a pointer to member

今天我就遇到了这个问题,这里把解决方案贴出来,仅供参考:

it = find_if (myvector.begin(), myvector.end(), IsOdd);

改为:

it = find_if(myvector.begin(), myvector.end(),std::bind1st(std::mem_fun(&CTest::IsOdd),this));

用bind1st函数和mem_fun函数加上this指针搞定的。

完整实例代码点击此处本站下载。

希望本文所述对大家的C++程序设计有所帮助。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++中 map的基本操作
  • C++中 STL list详解及简单实例
  • 浅谈c++ stl迭代器失效的问题
  • C++ STL list 遍历删除出错解决方案
  • c++中容器之总结篇
  • C++在成员函数中使用STL的find_if函数实例
  • 浅析C/C++中sort函数的用法
  • 深入解析C++ STL中的常用容器
  • C++ 关于STL中sort()对struct排序的方法
  • C++利用容器查找重复列功能实现

相关文章

  • 2017-05-28怎么通过C语言自动生成MAC地址
  • 2017-05-28Visual C++程序设计中Windows GDI贴图闪烁的解决方法
  • 2017-05-28C++ 11和C++98相比有哪些新特性
  • 2017-05-28C++中const应放在类型前还是后
  • 2017-05-28深入理解线程安全与Singleton
  • 2017-05-28双向链表插入删除基本应用介绍
  • 2017-05-28浅谈c语言中转义字符的用法及注意事项
  • 2017-05-28用C实现PHP扩展 Fetch_Url 类数据抓取的方法
  • 2017-05-28Cocos2d-x 3.x入门教程(二):Node节点类
  • 2017-05-28c语言求1+2+...+n的解决方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C数据结构之双链表详细示例分析
    • 详解计数排序算法及C语言程序中的实现
    • 实例详解C/C++中extern关键字
    • 顺序线性表的代码实现方法
    • 深入解析C++ Data Member内存布局
    • C++二分查找(折半查找)算法实例详解
    • C语言中结构体偏移及结构体成员变量访问方式的问题讨论
    • java实现任意四则运算表达式求值算法
    • 载入内存,让程序运行起来
    • C++的头文件和实现文件详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有