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