`

(STL)for_each \ mem_fun \ mem_fun_ref

    博客分类:
  • C++
 
阅读更多

有一个用户信息类CUserInfo,包括一个类成员函数initdatd(用于初始化用户数据),代码如下:

class CUserInfo

{

public:

void initdata(void)

{

// ...

}

};

假设有一个列表存放所有的用户数据:

std::list<CUserInfo> userlists;

我们需要定期的对userlists所有用户做一次初始化操作,也即是调用类成员函数CUserInfo::initdata

普通利用for循环实现要求

正常来讲,很多人(包括我在内)可能第一时间会想到使用for循环,下面给出例子代码;

std::list<CUserInfo>::iterator iter;

for (iter=userlists.begin(); iter!=userlists.end(); iter++)

{

(*iter).initdata();

}

使用for循环确实可以实现要求,但很多C++专家、编程手册和历史经验告诉我们,“在处理STL容器的时候,尽量不要自己写循环;”“算法函数优先使用于循环;”“

同样我也推荐使用下面的std::for_eachstd::mem_fun_ref方案。

使用std::mem_fun_ref函数

利用std::for_eachstd::mem_fun_ref同样可以实现我们想要的功能,代码如下:

for_each(userlists.begin(), userlists.end(), std::mem_fun_ref(&CUserInfo::initdata));

“什么?”“不可能!”“只有一行代码?”

“是的,没错!”“只有一行代码。”

使用std::mem_fun函数

或许有些人会问,那mem_fun怎么用?用在哪里?

而有些人会问,如果我是存的CUserInfo*,怎么处理?

其实你们问的也就是下面我要给出的这段代码,解决的问题;

std::list<CUserInfo*> userlists;

for_each(userlists.begin(), userlists.end(), std::mem_fun(&CUserInfo::initdata));

总结

std::mem_funstd::mem_fun_ref所实现的是相同的功能,可以这么理解之间的差异,mem_fun用于处理容器对象指针,而mem_fun_ref用于处理容器对象实体。

分享到:
评论

相关推荐

    for_each 返回值

    在 C++ STL 中,for_each 算法是一种非常有用的算法,它可以对容器中的每个元素应用一个函数对象(仿函数)。在本文中,我们将详细介绍 for_each 返回值的使用方法和实现原理。 for_each 算法概述 for_each 算法是...

    stl_reader.zip_C++读取STL_STL读取_stl_reader_读取stl_读取stl文件

    C++读取STL文件,输出所有三角形的顶点坐标

    stlshow_stl分层_STL分层_stlmatlab_STL切片_stl分层_源码.rar.rar

    本资源“stlshow_stl分层_STL分层_stlmatlab_STL切片_stl分层_源码.rar.rar”包含了与STL文件处理相关的代码和工具,特别是关于STL模型的分层和切片操作,这对于3D打印过程至关重要。 1. STL文件结构: STL文件由一...

    stl文件读取_matlab读取stl文件形成点云_读取stl文件_读取stl_形貌_形貌扫描云图_

    STL(STereo Lithography)文件格式是一种广泛用于3D打印和计算机辅助设计(CAD)领域的文件格式。它主要存储三维几何模型的信息,通常由一系列三角面片组成,每个三角面片都包含三个顶点坐标和法线方向。在本场景中...

    stl.rar_STL文件_STL显示_STL读取_stl文件读取_读取stl.

    STL文件,全称为“Standard Tessellation Language”或“StereoLithography Format”,是一种广泛应用于3D打印、计算机辅助设计(CAD)和快速原型制造(Rapid Prototyping)领域的文件格式。它主要用来存储三维几何...

    stl_algobase.h

    #ifndef __SGI_STL_INTERNAL_ALGOBASE_H #define __SGI_STL_INTERNAL_ALGOBASE_H #ifndef __STL_CONFIG_H #include &lt;stl_config.h&gt; #endif #ifndef __SGI_STL_INTERNAL_RELOPS #include &lt;stl_relops.h&gt; #endif #...

    STL算法(for_each/transform)

    ### STL算法:for_each与transform详解 #### 一、for_each算法 `for_each` 是C++标准模板库(STL)中的一个非常实用的算法,主要用于遍历容器中的每个元素,并对这些元素执行指定的操作。这使得代码更加简洁且易于...

    STL.zip_STL S7300_stl 西门子_stl西门子_西门子 STL_西门子stl

    压缩包内的文件“STL_BOOK”可能是一个文档或者教程,详细讲解了STL语言的基础知识、编程规范以及实例解析。这个文件对于初学者或者需要提升STL编程技能的工程师来说,是一份宝贵的参考资料。通过阅读这份文档,读者...

    stlshow_stl分层_STL分层_stlmatlab_STL切片_stl分层

    STL(STereoLithography)格式是一种广泛用于3D打印和计算机辅助制造的文件格式,它由一系列三角形面片组成,代表三维物体的表面。在3D打印过程中,STL分层是一项重要的预处理步骤,将模型按指定厚度分割成多个二维...

    stlshow_stl分层_STL分层_stlmatlab_STL切片_stl分层.zip

    这个压缩包“stlshow_stl分层_STL分层_stlmatlab_STL切片_stl分层.zip”包含与STL文件处理相关的源代码,特别是关于STL的分层、切片和在MATLAB环境中的操作。下面将详细介绍这些关键概念和相关知识点。 1. **STL...

    stl.tar.gz_STL_STL opengl_STL文件_stl 分块_点云数据

    `标签`中的“stl__opengl”指的是使用OpenGL来显示STL模型。OpenGL是一个跨语言、跨平台的编程接口,用于渲染2D、3D矢量图形。开发者可以使用OpenGL API来加载和绘制STL文件中的三角面片,从而在屏幕上生成3D视图。 ...

    node-stl.zip_.stl文件_STL文件_stl 体积_stl模型_体积 STL

    STL(STereoLithography)文件格式是3D打印和计算机辅助设计(CAD)领域中广泛使用的一种标准文件格式。这种格式最初由3D Systems公司开发,用于描述三维几何形状,尤其是为立体光刻(Stereo Lithography Apparatus...

    stl.rar_STL_STL源码下载_stl 源码_stl源码_visual c

    STL,全称为Standard Template Library(标准模板库),是C++编程语言中不可或缺的一部分,它提供了高效、可重用的数据结构和算法。STL的主要组件包括容器(如vector、list、set等)、迭代器、算法和函数对象。这些...

    STL-MOUSEMOVE.rar_STL opengl_STL文件_VC 界面_stl vc_鼠标 旋转

    在本项目中,我们主要探讨的是如何在VC++环境下,结合OpenGL库,实现STL(Standard Tessellation Language)文件的读取与可视化操作,特别是通过鼠标交互进行模型的旋转。STL是一种广泛应用的3D模型文件格式,常用于...

    SSTL_DISPLAY_T.rar_STL拓扑_matlab stl_matlab stl点_stl matlab_stl显示

    STL文件,全称为“Standard Tessellation Language”或“Standard Triangle Language”,是一种广泛用于3D打印、计算机图形学和CAD领域的文件格式。它主要存储三维模型的表面三角形网格,通常用于快速原型制造和3D...

    STL文件的读取显示.zip_STL c++_STL文件_STL读取_读取stl_读取stl文件

    STL(STereo Lithography)文件格式是一种广泛用于3D打印和计算机辅助设计(CAD)领域的数据格式。它主要存储三维几何模型的表面信息,由一系列三角形面片构成。在C++编程中,处理STL文件是进行3D图形处理和建模的...

    STL.rar_3d_STL_STL文件显示_labview_stl顶点向量

    在“STL.rar_3d_STL_STL文件显示_labview_stl顶点向量”这个项目中,我们将探讨如何使用LabVIEW(Laboratory Virtual Instrument Engineering Workbench)来处理和可视化STL文件,以及如何显示其中的顶点和法向量。...

    sgi_stl.zip_VS2010 sgistl_sgi_sgi stl_stl SGI_vs2010 sgi pudn

    这个名为"sgi_stl.zip_VS2010 sgistl_sgi_sgi stl_stl SGI_vs2010 sgi pudn"的压缩包文件,显然包含了与SGI STL版本相关的资源,特别强调了它已经针对Visual Studio 2008进行了修改以确保兼容性,并且还提供了一些...

    STL.rar_C++ STL_C++ STL_STL_STL c++_STL教程

    C++中的STL,全称为Standard Template Library(标准模板库),是C++编程语言中一个极其重要的组成部分。它提供了一组高效、灵活且可重用的容器、算法和迭代器等编程工具,大大简化了复杂的数据结构操作和算法实现。...

    stlreader.rar_3d stl_STL读取_stl gcode_读取stl文件_重建

    很多做三维重建的开发人员都需要读取三维数据,这个程序实现了读取三维数据文件(stl文件)的函数,并用opengl显示出来了,很有参考价值的,其中有函数readstlfile就是实现了从stl文件中读取三角面片的数据。

Global site tag (gtag.js) - Google Analytics