Jas*_*ine 4 c++ algorithm reverse stdlist c++11
例如,我试图找出如何反转,grades{1, 2, 3, 4, 5, 6}从第三个元素开始。
我知道我们无法通过列表来(grades.begin() + 2)获得该职位,但我不知道如何去做。这是我到目前为止所拥有的,我只是颠倒了整个列表:
reverse(firstList.begin(), firstList.end());
Run Code Online (Sandbox Code Playgroud)
我希望它是相反的,以便列表变成:grades{1, 2, 6, 5, 4, 3}
我知道我们无法通过列表来
(grades.begin() + 2)获得职位,但是 [...]
你是对的。由于手段灵活list.begin() + pos,这样做的成本较低。迭代std::list器(即双向迭代器)不能有效地随机访问(即它是昂贵的)。因此,按照惯例,它必须是冗长的。
您需要明确地通过其元素进行迭代。这意味着,您可以利用std::nextfrom <iterator>header 来提供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());
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
341 次 |
| 最近记录: |