假设我有一个接受各种 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/