我注意到内部实现的std::find中的一些东西让我很困惑;他们为什么要这样做呢?std::find(begin,end,...)
假设这一行,那么在文件stl_algobase.h
的内部实现中,第2064行是:
typename iterator_traits<_RandomAccessIterator>::difference_type
__trip_count = (__last - __first) >> 2;
这里发生了什么?为什么他们一起做减法,然后使用移位运算符?我不明白他们为什么这样做?(抱歉,如果这是一个初学者的问题。)
1条答案
按热度按时间oxiaedzo1#
这是一个循环展开各种优化。
整个实现是
来自https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/stl_algobase.h#L2059