STL高级语法

本文深入探讨了STL中的高级语法,包括智能函数指针、阶乘运算在容器中的实现、进制转换、动态类型推导、元组的使用、无序元组和动态元组容器、多线程交互中的数据共享与原子操作、线程等待策略、lambda表达式的应用以及异步线程和延迟调用。通过实例讲解,展示了STL在复杂编程场景中的强大功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.STL智能函数指针

#include <functional>

void test1(const std::string& s) {
    std::cout << "test1:" << s << '\n';
}

class ATestClass{
public:
    void test2(const std::string& s) {
        std::cout << "test2:" << s << '\n';
    }
};

typedef std::function<void(const std::string&)> FunPtr;

FunPtr  f = std::bind(&ATestClass::test2, this,std::placeholders::_1);
/*
    或者可以这样表示
*/
auto  fun = std::bind(&ATestClass::test2, this,std::placeholders::_1);

f("4396");
fun("2800");
f = std::bind(&test1, std::placeholders::_1);
f(str);

2.容器阶乘

#include <iostream>
#include <vector>
#include <string>
#include <numeric>


int main()
{
	std::vector<int> ivec = { 8, 1, 1, 1 };

	std::vector<std::string> colors = { "red","green","blue" };
	/// 自定义计算方法
	auto calc = [](auto op1, auto op2) { return op1 + op2; };

	std::cout << "加法1: "
		<< std::accumulate(ivec.begin(),
			ivec.end(),
			0,
			calc)
		<< "\n";
	std::cout << "加法2: "
		<< std::accumulate(ivec.begin(),
			ivec.end(),
			0,
			std::plus<int>())
		<< "\n";

	std::cout << "减法: "
		<< std::accumulate(ivec.begin(),
			ivec.end(),
			0,
			std::minus<int>())
		<< "\n";

	
	std::cout << "乘法 : "
		<< std::accumulate(ivec.begin(),
			ivec.end(),
			1,
			std::multiplies<int>())
		<< "\n";

	std::cout << "string 加法 : "
		<< std::accumulate(colors.begin(),
			colors.end(),
			std::string(""),
			calc)
		<< "\n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值