2016-04-10 37 views

回答

3

該參數將用作std::set::insert的插入位置的提示,以便在指向正確位置時提高複雜性。

暗示 - 迭代到新的元件將被插入其之前(因爲C++ 11)

複雜
分期常量如果插入只是提示後發生在位置 的位置,對數在容器的大小 否則。

可能的情況之一是修改set的元素(假設不會更改排序順序)。 std::set::iterator是常量迭代器,這意味着您無法直接通過std::set::iterator修改該元素。您可以(1)找到元素,(2)複製並修改副本,(3)從set中刪除元素,(4)將副本作爲新值插入。在第四步中,您可以將第三步得到的迭代器作爲提示傳遞給std::set::insert

0

它被用作提示插入新元素的提示,也使得接口與其他容器兼容,即。 std::vector:insert,這樣你可以使用std::inserter這個類型有T::insert這樣的操作。

您也可以先用std::set::equal_range,如果兩個返回迭代優化刀片是平等就意味着元素沒有被發現和迭代器指向的地方,這個元素可以被插入:

std::set<int> s = {0,1,2,3,5,6,7};  
auto r = s.equal_range(4); 
if (r.first == r.second) 
    s.insert(r.first, 4); 
相關問題