gpt4 book ai didi

c++ - 在 C++ 中遍历列表的一部分

转载 作者:行者123 更新时间:2023-11-30 00:52:45 32 4
gpt4 key购买 nike

我是 C++ 的新手,我正在研究合并排序的实现,以帮助我熟悉这门语言。

目前我有一个整数列表,我想创建 2 个子列表并将原始列表的前半部分存储到名为“left”的列表中,将剩下的一半存储到名为“right”的列表中

Ex: 假设我原来的列表数据是16, 24, 56, 12, 89;我想遍历此列表添加16、24 到新的子列表“左”并将 56、12、89 添加到子列表“right”所以 left 会导致 [16, 24]正确的是 [56, 12, 89]

这是我现在的代码;我应该在 if 语句中写什么条件?('l' 是在函数参数中传递的列表的名称)

    list<int> left, right;
int midpt = l.size()/2;
for(listIt = l.begin(); listIt!= l.end(); listIt++){
if () left.push_back(*listIt);
if () right.push_back(*listIt);
}

最佳答案

这可能更容易:

#include <iterator>
#include <list>

auto middle = std::next(l.begin(), l.size() / 2);

std::list<int> left(l.begin(), middle), right(middle, l.end());

这构建了两个新列表,leftright , 直接来自各自的范围。 std::next算法返回一个迭代器,该迭代器是通过将给定的迭代器推进给定的步数而获得的。注意 std::list<int>::size()从 C++11 开始具有恒定的运行时复杂度,尽管迭代迭代器需要线性工作量。

关于c++ - 在 C++ 中遍历列表的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18219228/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com