【C++】随手记录

降序排序

std::sort(  XX.rbegin() , XX.rend() ) ;

创建反转字符串

std::string(s.rbegin() , s.rend() ) ;

字符串转 unsigned long long (uint64)

std::stoull(str) -> ull

数字转字符串

std::to_string(num)

std::map 可实现简单的switch … case 功能

eg: 实现简单的二元加减乘除

std::map<char, std::function<int(int , int)> >  table = { 
		{'+',std::plus<>()},
		{'-',std::minus<>()},
		{'*',std::multiplies<>()},
		{'/',std::divides<>()}
};

int result = table[op](oprand1, oprand2);

在某位置上写入N次

 std::generate_n ( 输出位置(输出流迭代器) , N , 内容(生成函数) )

eg:重复N次string :

std::ostringstream oss{};
std::generate_n( std::ostream_iterator<std::string>{oss} , N , [&str] { return str;}  )

切分以空格分割的字符串

“abc edf 233 345 zzz”

sstringstream >> string变量 / 数字类型变量 ;

获取某数字类型的上下界

以int为例

#include <limits> 
std::numeric_limits<int>::max() / min() ;

统计容器中满足某条件的元素个数 std::count_if

auto count = std::count_if(XX.begin(), XX.end(), [](/*元素类型*/ ) { /*返回bool值*/ } );

对容器中的每个元素作用上某函数, 并产生新容器 std::transform

std::transform(XX.begin(), XX.end(), YY.begin()/*即新容器的输出位置*/, 作用于元素上的函数 ==> 必须要返回一个新的值 );

// 转换大小写:
std::transform(str.begin(), str.end(), str.begin() , ::toupper / ::tolower);

以函数作为参数的几种方式

函数指针

eg:

g( std::string (*func)(const std::string& )  )

模板参数

template<typename F>
g(F func)

std::function

g( std::function<std::string(const std::string&)>  func) ;

vector的 “pop_front” 方法

std::vector本身没提供此方法, 不过可以使用X.erase( X.begin() )

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值