小技巧实现istream的非空格符分割

只是个小技巧,然而我现在并不能完全理解这个实现的原理,还是很弱的。

大概是自定义locale,重新定义空白符,再将自定义locale导入istream改变istream的行为。无论是cin还是ifstream都是可以用的。注意imbue完locale之后cin的全局特性都会改变,如果想要恢复原来的istream的行为的话要imbue原来的locale.

istream.get()修改delimiter

直接使用get()的第三個參數就可以了,cin.get(目標串, 目標輸入最大長度,分隔符);

但是只能用一個分隔符。

如何给priority_queue写比较函数

下面是转的:

注:

  1. less<class T>这是大顶堆,按值大的优先,值大的在最上面。greater<class T>这是小顶堆,按值小的优先,值小的在最上面。
  2. 自定义cmp如果还有不明白的看这里:
  3. 还是自定义cmp函数,注意,一般ACM中用结构体内含“bool operator()(const int &a,const int &b)”。这其实等价于Class cmp,不过更省事,当然也不规范(不需要规范)。
  4. return就是希望如何排列为true。如果希望由大到小,就将大到小的情况return;反则亦然。和sort的自定义cmp是一样的。
Scroll to top