gpt4 book ai didi

接收 std::vector 作为参数的 C++ 模板函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:56:49 24 4
gpt4 key购买 nike

我需要制作一个模板函数,该函数接收某种类型的 std::container 作为参数 - 让我们说 std::vector 并从该容器中删除所有元素。我需要一个与此等效的函数:

for_each(some_vector.begin(), some_vector.end(), [](some_vector_type* element){delete element;}); 

调用应该是这样的:

delete_all_elements(some_vector);

这可能吗?

编辑:我想在 delete_all_elements 中使用第一个代码

最佳答案

为什么不呢?

template <typename C>
void delete_all_elements(C& container) {
std::for_each(
container.begin(), container.end(),
[](typename C::value_type ptr) { delete ptr; }
);
container.clear();
}

您可以添加例如static_assert(std::is_pointer<typename C::value_type>::value, "Elements must be pointers");在开始时确保您不会尝试删除非指针。

关于接收 std::vector 作为参数的 C++ 模板函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7248913/

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