我有一个功能:
void get_good_items(const std::vector<T>& data,std::vector<XXX>& good_items);
此函数应检查所有数据并找到满足条件的项目,并在 good_items 中返回它们所在的位置。
用什么代替 std::vector<XXX>
最好?
-
std::vector<size_t>
包含所有好的索引。 -
std::vector<T*>
包含指向项目的指针。 -
std::vector<std::vector<T>::iterator>
包含项目的迭代器。 - 其他??
编辑:
我将如何处理 good_items
?
很多事情......其中之一是从 vector 中删除它们并将它们保存在其他地方。也许以后再做别的
编辑 2:
对我来说最重要的问题之一是如何访问 data
中的项目将很快取决于 good_items
的结构?
编辑 3:
我刚刚意识到我的想法是错误的。将原始指针(或智能指针)保留为 vector 的项不是更好吗,这样我就可以保留 vector 的实际值(指针)并且我不害怕大量复制,因为它们只是指针?
最佳答案
如果您从原始 vector 中删除项目,您列出的每一种方法都会有问题。
如果在原始 vector 中添加项,第二个和第三个就会有问题。如果您使用 push_back
,第一个不会有问题。添加项目。
如果你不修改原始 vector ,所有这些都可以。
鉴于此,我建议使用 std::vector<size_t>
.
关于c++ - 保持数据迭代器的 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33675870/