gpt4 book ai didi

c++ - std::unordered_set 和 std::vector 之间的多态性?

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

我的代码中有一个函数接收 C++ 容器对象,并使用循环读取其中的每个元素。该函数看起来有点像这样:

void function(std::unordered_set<unsigned int> container)
{
for(auto it = container.begin(); it != container.end(); it++)
{
/* Do something */
}
}

但是,我希望这个函数也接受 std::vector 类型的容器。从代码中可以看出,函数体不需要知道容器的类型(它可以使用 *it 访问每个元素)。如何在我的代码中没有冗余的情况下实现这一点?

最佳答案

类似于:

template<typename ContainerType>
void function(ContainterType container)
{
...
}

应该做你想做的。

你需要一个模板,因为 STL 容器没有通用的基类,所以它们不能通过,因为“这是基类,采用任何派生类型”。

假设您不想修改容器,我会选择:

template<typename ContainerType>
void function(const ContainterType& container)
{
...
}

避免复制。

关于c++ - std::unordered_set 和 std::vector 之间的多态性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22955744/

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