什么是移动感知容器?C++

3

什么是C++中的移动感知容器?我知道std::vector是一个移动感知容器,但不清楚移动感知的含义。


你在哪里看到这个术语的?我只能在C++标准中找到“allocator-aware”。 - kennytm
你的意思是像结构体一样,用一个布尔值表示它是否被改变了吗? - Charlie
来自 cppreference 的描述,unique_ptr 可以用作移动语义容器(例如 std::vector)中的元素类型。 - miáo
1个回答

2
这里提到了“move-aware container”,该容器类型通常用于管理对象的生命周期,包括:
* 作为移动语义容器的元素类型,例如std::vector,这些容器保存指向动态分配对象的指针(例如,如果需要多态行为)
这意味着容器知道如何处理仅可移动类型。std::unique_ptr是一种仅可移动类型:它不能被复制。这意味着,持有仅可移动类型对象的容器本身必须是仅可移动的。

有没有任何 stl 容器是不支持移动的? - miáo
严格来说,没有STL容器是移动感知的,但这只是术语。STL是1998年标准库的贡献者之一,在此之后并未作为单独的库进行维护。与之相比,Boost自C++11以来一直在做出贡献,并且仍在积极维护。也就是说,std::basic_string<Ch>不会有任何问题——移动charwchar_t与复制它是相同的。 - MSalters
2
@miāo - 你错过了MSalters(有点超技术)的观点:现在没有STL了,尽管许多人似乎使用“STL”来指代C++标准库,或者可能是其子集。 - Pete Becker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接