gpt4 book ai didi

c++ - 多态处理 vector 和 hash_set 的函数

转载 作者:搜寻专家 更新时间:2023-10-31 01:18:15 24 4
gpt4 key购买 nike

我在 C++ 中有一个函数,它接受一个 vector 并将一些项目推到它上面。例如:

void MyFunction(vector<int>* output);

我想对其进行修改,使其现在能够采用 vector hash_set。在 Java 中,这很容易,只需将函数更改为采用 Collection(公共(public)接口(interface))即可。所有 MyFunction 所做的就是将元素放入给定的容器中,因此它不必关心该容器是 vector 还是 hash_set,只需要有一些“插入”元素的概念.

感谢您的帮助!

最佳答案

他在做一个简单的模板时会遇到一个小问题。 Vector 通常使用 push_back 而 hash_set 会使用 insert。

使用模板,但使用插入函数并在 .end() 元素处插入,以便 vector 保持快速操作 - 这是您的最佳选择。如果将插入位置作为位置提示,您仍然会稍微降低哈希集的速度(尽管它会起作用)。

使用 insert(iter, val),通过在迭代器位置的元素之前插入新元素来扩展容器。这对于序列容器(vector)是正确的,而关联容器(hash_set)将只使用位置作为提示——但插入仍然可以正常工作。下面的函数可用于将值 U 插入任何支持插入的容器(所有 STL 都支持),假设 U 与 vector 元素类型相同或可隐式转换为 vector 元素类型。

template <typename T, typename U>
void InsertToContainer(T& container, U val)
{
container.insert(container.end(), val);
}

关于c++ - 多态处理 vector 和 hash_set 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7338886/

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