如果我有這樣一個基本的列表:C++ std ::插入中間和結束之間的列表?
std::list<int> mylist;
mylist.push_front(1);
mylist.push_front(2);
mylist.push_front(3);
mylist.push_front(4);
mylist.push_front(5);
mylist.push_front(6);
mylist.push_front(7);
我將如何插入3和4之間的8號?
如果我有這樣一個基本的列表:C++ std ::插入中間和結束之間的列表?
std::list<int> mylist;
mylist.push_front(1);
mylist.push_front(2);
mylist.push_front(3);
mylist.push_front(4);
mylist.push_front(5);
mylist.push_front(6);
mylist.push_front(7);
我將如何插入3和4之間的8號?
使用:std::list::insert
和std::advance
auto it = mylist.begin();
std::advance(it,4); //locate the position
mylist.insert(it,8); //insert the element
如果您的列表按照比較標準進行排序,那麼這應該有效。該列表還可以含有重複:
mylist.insert(std::upper_bound(mylist.rbegin(), mylist.rend(), 3).base(), 8);
std::upper_bound
迭代器返回到所述第一位置,其中進行比較的值是大於3
和std::insert
插入8
在該位置。
你可能應該解釋一下,這是假定列表有一定的排序。 – juanchopanza
@juanchopanza編輯。 – Kunal
['標準::目錄:: insert'(http://en.cppreference.com/w/cpp/container/list/insert) – P0W
發生了什麼事到文檔?所有的網站都停了嗎? –
@LightnessRacesinOrbit感謝您的非凡貢獻。非常感謝... – user997112