降序排序
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() )