c++ - 在 C++ 中存储和修改多个列表

标签 c++ list

我开始使用 C++ 进行编程,并且正在努力实现一种算法,该算法可以按顺序访问一组列表并在中间执行一些删除操作。列表的数量在编译时是未知的。

我的问题是如何存储这些列表(或对它们的引用)以便我可以最有效地访问它们。请在下面找到一个非常简单的示例,说明我想要对只有两个简单列表 {0,1,2} 的情况执行的操作,并且在这两种情况下删除的元素都是第二个。先感谢您。

#include <stdio.h>
#include <list>
using namespace std;

int main(){
    list<int> list1;
    list<int> list2;
    for(int j = 0; j < 3; j++){
        list1.push_back(j);
        list2.push_back(j);
    }

    list<int>::iterator i;

    i = list1.begin();
    advance(i,1);
    list1.erase(i);

    i = list2.begin();
    advance(i,1);
    list2.erase(i);
}

最佳答案

您有未知数量的(在编译时)相同类型的元素(在您的示例中为 std::list)。您的解决方案应该是 std::vector , 所以 std::vector<std::list<int>>在你的例子中:

int main()
{
    int n = 3; // get at runtime

    std::vector<std::list<int>> lists(n); // n lists

    // for each list
    for(auto& list : lists)
    {
        // populate the list
        for (int i = 0; i < 3; ++i)
        {
            list.push_back(i);
        }
    }

    // for each list
    for (auto& list : lists)
    {
        // remove the element you want

        auto it = list.begin();
        std::advance(it, 1);

        list.erase(it);
    }
}

关于c++ - 在 C++ 中存储和修改多个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57977083/

相关文章:

java - 确定数据库列表的第一行是否已完成 - java

c++ - python 中等效的 C++ 嵌套打印

c# - 比较两个列表的最简单方法是什么?

android - 无法链接 libSTLport_shared,即使它存在...?

C++ 在 Linux/Ubuntu 中写入文件错误?

list - 有任何内容([_])和任何内容(_)的列表有什么区别

c# - 从 C# 中的 List<item> 中删除列表项后的行为

list - 为什么 'yum --disablerepo=\* list' 仍然列出项目?

c++ - 这就是 C++ 11 中的移动构造函数有意义的原因吗?

c++ - 在 Qt 中如何在用户主目录中打开 QFileDialog::getOpenFileNames