gpt4 book ai didi

c++ - std::vector 在不知道元素类型的情况下插入

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:13:14 24 4
gpt4 key购买 nike

假设我有一个接受各种 vector 的模板化函数(但出于各种原因我不能在模板参数中提及它)。这是我正在尝试做的事情:在不知道其类型的情况下,在特定位置插入一个新的默认构造元素:

template <typename T>
void foo(T* v) {
v->insert(v->begin() + 5, decltype(v->at(0))());
}

这行不通,但可以让您了解我正在尝试做什么。我还尝试使用 std::vector 中的 value_type 但我也遇到了问题。有什么想法可以解决这个问题吗?

最佳答案

回避整个“命名类型”业务:

v->emplace(v->begin() + 5);

v->insert(v->begin() + 5, {});

您当前的版本不起作用,因为 decltype(v->at(0)) 是引用类型。 value_type 如果您正确使用它应该可以工作,但如果没有看到您在做什么,我不能说它有什么问题。

关于c++ - std::vector 在不知道元素类型的情况下插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44189845/

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