gpt4 book ai didi

c++ - 不可复制类型的整数可索引 RAII 容器

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

是否有一个标准容器具有与vector<T> 相同的通用API?但这会通过直接默认构造填充新位置吗?


背景:

我有一个不允许复制但有默认构造函数的类型,我真正想做的是:

vector<NoCopy> bag(some_size);

// use bag[i]'s

return; // bag & contents get correctly cleaned up.

但是,这不起作用,因为 vector<T>(int)是根据默认构造一个对象然后将其复制到每个新位置来实现的。


编辑:不是 C++0xB(又名 C++11)

最佳答案

一种选择是升级到符合 C++11 标准的标准库实现。

在 C++11 中,vector(size_type) 构造函数默认将 N 个元素构造到容器中。它既不复制也不移动任何元素。

Visual C++ 2010 不支持此 C++11 功能;我相信 Visual C++ 11 Developer Preview 确实支持它。我不知道最新版本的 libstdc++ 是否支持这个;我会怀疑 libc++ 会。

关于c++ - 不可复制类型的整数可索引 RAII 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8330936/

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