如果你想要平坐,你想要一个模仿<代码>的集装箱。 RandomAccessContainer 概念......基本上,<代码>载:vector。
在<代码>以下的类型上操作: 速成/代码”相对较快,你可以取得你希望使用<代码>std:下限/<>或std:upper_限值/代码>,如果你想要多数值,可以自行决定收回所有同等价值,一种很好的方式是使用<代码>std:平等_range/code>,该编码基本上使你产生与应用<下限/>代码>和<上下限/代码>和<>上下限/代码>相同的结果,但具有更复杂性。
现在,就餐厅而言,大新闻是<代码>std:distance,作为Random AccessIterator
模型的奥(1)复杂性。
typedef std::vector<int> ints_t;
typedef ints_t::iterator iterator;
ints_t myInts;
for (iterator it = another.begin(), end = another.end(); it != end; ++it)
{
int myValue = *it;
iterator search = std::lower_bound(myInts.begin(), myInts.end(), myValue);
myInts.insert(search, myValue);
std::cout << "Inserted " << myValue << " at "
<< std::distance(myInts.begin(), search) << "
";
// Not necessary to flush there, that would slow things down
}
// Find all values equal to 50
std::pair<iterator,iterator> myPair =
std::equal_range(myInts.begin(), myInts.end(), 50);
std::cout << "There are " << std::distance(myPair.first,myPair.second)
<< " values 50 in the vector, starting at index "
<< std::distance(myInts.begin(), myPair.first) << std::endl;
是否方便?
std:down_spanish
,std:upper_spanish<>/code> and std: Equal_range
have a O(log(n) diversity and std:distance
has a O(1) diversity, so all there is well effective...
EDIT:如评论中所强调的;> 插入实际上为O(n),因为你不得不将内容移至周围。