例如,我試圖弄清楚如何grades{1, 2, 3, 4, 5, 6}從第三個元素開始反轉。
我知道有些名單我們無法(grades.begin() 2)獲得職位,但我不確定如何去做。到目前為止,這就是我所擁有的,我只是顛倒了整個串列:
reverse(firstList.begin(), firstList.end());
我希望它是反向的,以便串列變為: grades{1, 2, 6, 5, 4, 3}
uj5u.com熱心網友回復:
我知道對于串列我們無法
(grades.begin() 2)獲得職位,但是 [...]
你是對的。提供list.begin() pos手段的靈活性,這樣做很便宜。所述std::list迭代器(即BidirectionalIterator)不能被有效地隨機存取的(即,它是昂貴的)。因此,按照慣例,它必須是冗長的。
您需要明確地通過其元素進行迭代。這意味著,您可以使用std::nextfrom<iterator>標頭為std::reverse.
#include <iterator> // std::next
#include <algorithm> // std::reverse
std::list<int> grades{ 1, 2, 3, 4, 5, 6 };
std::reverse(std::next(grades.begin(), 2), grades.end());
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
現場演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/340406.html
