c++,对每个数组成员执行函数

标签 c++ arrays delegates function-pointers

我有一个关于 C++ 和数组的问题。

假设我有一个名为 CustomArray 的类,它只不过是一个通用数组,具有大小和容量属性,使数组动态化。定义为:

template<typename T>
class CustomArray
{
public:
    int capacity, size;
    T* items;
    //constructor

    //destructor

    //function1

    //function2

    //etc...
};

现在我有点卡住了,我想实现一个像这样的功能:"

void performOnAllItems(/*function?*/)
{
    for(int i = 0; i < size; i++)
    {
        //perform function on element
    }
}

将另一个函数作为参数(如果可能的话?)并在所有元素上执行它。那可能吗?如果是这样……怎么办?

提前致谢。

最佳答案

像这样添加成员 beginend:

T *begin() { return items; }

T *end() { return items + size; }

创建一个派生自 std::unary_function 的仿函数。

例如

template <typename T>
class MyFunc : std::unary_function<T, void> {
public:
    void operator()(T& t) {
    // ...
    }
};

然后调用 std::foreach(foo.begin(), foo.end(), MyFunc);

更新

在 C++11 中,您可以为 foreach 使用 lambda:

std::foreach(foo.begin(), foo.end(),
              [/* (1) */](T& t) { /* ... */ }
            ); 

如果 (1) 不为空,则 lambda 为闭包;这被称为捕获 lambda,并且 Visual C++ 10 Lambda Expressions提供了一个很好的例子。

关于c++,对每个数组成员执行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8158831/

相关文章:

c++ - 在模板化的嵌套和继承类中未检测到变量

c++ - 预分配 unordered_map 的线程安全

php - 获取多维数组的键?

PHP - 使用存储值作为数组键

python - 如何计算数字数组的对数阶乘

iphone - 如何验证委托(delegate)是否响应选择器?

c++ - 使文件指针读/写到内存中的位置

c++ - 为什么这个操作没有给我更高的精度?

c# - 这两个委托(delegate)声明有什么区别?

ios - 已分配委托(delegate),但未调用函数