1.std::recursive_mutex 与 std::mutex ,recursive_mutex允许同一个线程对互斥量多次上锁(即递归上锁),来获得对互斥量对象的多层所有权,std::recursive_mutex 释放互斥量时需要调用与该锁层次深度相同次数的 unlock(),可理解为 lock() 次数和 unlock() 次数相同,除此之外,std::recursive_mutex 的特性和 std::mutex 大致相同
2.std::stringstream:简化类型转换
std::stringstream m_sstream; std::string result; int i=1000; m_sstream<<i; //int写入流 m_sstream>>result; //流写到字符串 std::cout<<result<<"\n";3.uint64_t total_award = std::accumulate(ai.begin(), ai.end(), 0, [](auto& l, auto& r){
return l + r.second;//l是上一次调用的sum });//求区间内的和。4.std::find。参数为一对迭代器,和一个给定的值。返回在迭代器之间等于第一个给定值的迭代器。 if (std::find(vec.begin(), vec.end(), value) != vec.end()) {}
5. std::find_if(
vec.begin(), vec.end(), [id](auto& item) { return item.id == id; })//在迭代器区间按照指定function查找6.std::swap。交换2个容器。
7.std::map count函数,用于判断key是否存在
std::map<string,int> table; string key = "A"; if(table.count(key))//如果键存在返回1,否则返回0 cout<<table[key]<<endl; }8.std::thread。在创建thread的时候就会执行。
void test1(){
cout << "hello test 1"<<endl; while (true) { } } std::thread t1(test1);//创建就会执行 t1.join();//等待t1执行完毕,否则阻塞在这里9.std::stoll C++11 将字符串转化成带符号整数
10.std:vector push_back()自动会调用ClassA(ClassA&& other)(如果有的话)来构造,emplace_back可以隐式转化,即自动调用对应的构造函数。