gpt4 book ai didi

c++ - 在移出 vector 上调用 size() 方法是否安全?

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

<分区>

标准指定 STL 容器在 begin moved 之后(在这种情况下我们谈论启用 move 构造/赋值的 std::move),在 有效,但未指定状态

我相信这意味着我们只能应用不需要先决条件的操作。我记得这里有人在 Stackoverflow 上声称这是真的,经过一番检查后我同意了。不幸的是,我不记得我检查过哪些来源。此外,我无法在标准中找到相关信息。

来自 [container.requirements.general/4] , table 62 ([tab:container.req]),我们可以看到 a.size() 没有前置条件。这是否意味着此代码是安全的?

#include <iostream>
#include <vector>

int main() {
std::vector<int> v1 = {1, 2, 3};
std::vector<int> v2 = std::move(v1);

std::cout << v1.size(); // displaying size of the moved-from vector
}

未指定此代码将打印什么,但它安全吗?意思是,我们这里有未定义的行为吗?

编辑:如果我问其他容器,我认为这个问题不会太宽泛。答案在所有其他STL容器中是否一致,包括std::string

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