gpt4 book ai didi

c++ - 从对这些项目的引用 vector 访问链接列表项目

转载 作者:行者123 更新时间:2023-11-30 05:09:16 29 4
gpt4 key购买 nike

我有一个整数 vector ,我需要对该列表执行大量的移动、切割和更改操作。但是......我主要需要根据它们的值(value)来访问这些项目。

所以我想出了一个想法,即使用 std::list(双链表),这将有助于重新排序操作。然后还创建一个由整数值索引的 vector ,其中值是对 std::列表项的引用 vector 。这样我就不必遍历整个链表来查找列表中的特定值,因为我将拥有这些较小的引用 vector 。

虽然我不知道如何设置它。

这是我尝试做的示例:

vector<int> original = { 1, 1, 0, 2, 1, 3, 1, 0 };
vector<vector<int*>> byNumber(4);
list<int> linkedList;
for (int i = 0; i < original.size(); ++i) {
linkedList.push_back(original[i]);
byNumber[original[i]].push_back(*linkedList[i]);
}

将“原始”项目插入 linkedList 很容易,但我需要坚持的是在 byNumber 中创建引用。我也尝试过推送 &(*linkedList[i]) 。我不清楚我可以使用什么语法来做到这一点,甚至是否可能。我也尝试过使用 unique_ptr 而不是 int* ,如果这太成问题的话我可能会切换回去。

最佳答案

根据使用迭代器的建议,我想到了这个。但如果有人有更严格的解决方案,我很乐意听到。

vector<int> original = { 1, 1, 0, 2, 1, 3, 1, 0 };
vector<vector<list<int>::iterator>> byNumber(4);
list<int> linkedList;
list<int>::iterator it;
for (int i = 0; i < original.size(); ++i) {
linkedList.push_back(original[i]);
it = linkedList.begin();
advance(it, i);
byNumber[original[i]].push_back(it);
}

关于c++ - 从对这些项目的引用 vector 访问链接列表项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46292424/

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