C++17标准库新增类/函数(二)

本文详细介绍了C++17标准库中的新特性,包括std::apply和std::invoke的灵活调用方式,std::charconv提供的高效字符与数字转换,std::search及相关搜索算法的改进,std::execution的并行执行策略,以及std::memory_resource的内存管理增强。这些新特性为C++程序员提供了更强大的工具和更高的性能。
摘要由CSDN通过智能技术生成

 std::apply,std::invoke

std:apply定义在<tuple>中,因而apply(f,t)的意思就是f(t),其中f是一个可调用的函数,t是一个tuple,pair,array之类的可以调用std::get和std::tuple_size的参数集合类。

#include <iostream>
#include <tuple>
#include <utility>
int add(int first, int second) { return first + second; }
int main()
{
auto add_lambda = [](auto first, auto second) { return first + second; };
    std::cout << std::apply(add, std::make_pair(1, 2)) << '\n';
    std::cout << std::apply(add_lambda, std::make_pair(2.0f, 3.0f)) << '\n'; 
}

std::invoke定义在<functional>中,它比较复杂,以一种合适的方式调用invoke参数中的函数,该函数的参数来自于invoke的其他参数。

#include <functional>
#include <iostream>
 
struct Foo {
    Foo(int num) : num_(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值