- 局部变量的作用域只在生成它的代码块内有效,出了代码块就会被销毁。
可以用引用,指针;匿名函数;
- 对于pair
类似复合的数据对象,在用vector >vec容器时,循环遍历可以:
for (auto &[ch, num] : vec) {}
而且对其按int的键值对排序时sort(vec.begin(),vec.end(),[](pair<char,int>a,pair<char,int>b){ return a.second>b.second});
以及sort()源码分析和该方法适合哪些容器:
- vector和deque拥有随机访问迭代器,因此它们可以使用std::sort排序;
- 对于所有的无序关联式容器而言,它们只有前向迭代器,因而无法调用std::sort。但我认为更为重要的是,从它们名称来看,本身就是无序的,它们底层是用哈希表来实现。它们的作用像是字典,为的是根据key快速访问对应的元素,所以对其排序是没有意义的。
- 对于所有的关联式容器如map和set,由于它们底层是用红黑树实现,因此已经具有了自动排序功能,不需要std::sort。
void sort(RandomAccessIterator first, RandomAccessIterator last, Compare comp);
sort (first,finish,[]->(Type a,Type b){ return a>b; };
或者操作符重载函数写在自定义类内,这样sort()排序是就不一样了。