You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将C++旧式函数指针数组改写为std::array形式?

用std::array存储函数指针的实现方法

当然可以,直接把原生数组对应的函数指针类型作为std::array的模板参数即可,完全不需要改用std::function。

首先,先明确你的原生数组声明对应的函数指针类型:接受int参数、返回bool的函数指针。我们可以先给这个类型起个别名,让代码更易读:

using FuncPtr = bool (*)(int);

然后用这个别名声明std::array:

std::array<FuncPtr, 2> arr = {foo, foo2};

如果不想用类型别名,也可以直接把函数指针类型写进模板参数,只是语法稍显繁琐:

std::array<bool (*)(int), 2> arr = {foo, foo2};

两种写法都和原生数组bool (*arr[2])(int) = { foo, foo2 };功能完全一致,还保留了函数指针的轻量特性,不会有std::function带来的额外运行开销。

附上完整示例代码:

#include <array>
#include <iostream>

bool foo(int x) { return x > 0; }
bool foo2(int x) { return x < 0; }

int main() {
    using FuncPtr = bool (*)(int);
    std::array<FuncPtr, 2> arr = {foo, foo2};
    
    std::cout << std::boolalpha;
    std::cout << arr[0](5) << std::endl;  // 输出true
    std::cout << arr[1](5) << std::endl;  // 输出false
    return 0;
}

内容的提问来源于 %Primitive sought `P Rough世间一个g �( manslaughter
内容的提问来源于stack exchange,提问作者rare77

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 09:29:56