gpt4 book ai didi

c++ - 使用 operator[] 插入时不同的 std::map 大小(vc++ vs g++)

转载 作者:行者123 更新时间:2023-12-03 18:43:04 25 4
gpt4 key购买 nike

这段代码

#include <iostream>
#include <map>

int main()
{
std::map<int, std::size_t> m;
m[0] = m.size();
std::cout << m[0] << std::endl;
}
将打印 0vc++1g++ .
  • 这个代码有效吗?
  • 如果是,哪个编译器是正确的?
  • 直觉上我会期待 1 . vc++ 是如何结束的 0 ?
  • 最佳答案

    从 C++17 开始,order of evaluation保证,m.size()排在 m[0] 之前;结果保证是0 .

    1. In every simple assignment expression E1=E2 and every compound assignment expression E1@=E2, every value computation and side-effect of E2 is sequenced before every value computation and side effect of E1

    在 C++17 之前,行为是 unspecified .
    顺便说一句,您可以使用 Gcc C++17 mode 观察不同的行为和 Gcc C++14 mode .

    关于c++ - 使用 operator[] 插入时不同的 std::map 大小(vc++ vs g++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66441691/

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