gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 01:18:00 25 4
gpt4 key购买 nike

我开始使用 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/

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