当前位置: 首页 > 知识库问答 >
问题:

如何

柳俊逸
2023-03-14

我在这里看到了下面的代码。描述说:

我们还可以使用自动

我确实理解汽车的衰退

#include <iostream>
#include <map>

std::map<std::string, int> get_map()
{
    return {
        { "hello", 1 },
        { "world", 2 },
        { "it's",  3 },
        { "me",    4 },
    };
}

int main() {
    for (auto&& [ k, v ] : get_map())
        std::cout << "k=" << k << " v=" << v << '\n';
}

共有1个答案

朱祺
2023-03-14

自动有两种不同的用途

{
    auto&& __range = get_map(); // the temporary get_map() is bound to a reference, which 
                                // extends its lifetime to the lifetime of the reference
                                // decltype(__range) is std::map<std::string, int>&&

    auto __begin = __range.begin();
    auto __end = __range.end();     // potential different type from __begin since C++17
    for (; __begin != __end; ++__begin) {
        auto&& __elem = *__begin;  // this is your structured binding declaration
                                   // *__begin is an lvalue, so decltype(__elem) is
                                   // std::pair<std::string const, int> const&


        // the actual destructuring here
        std::string const& k = std::get<0>(__elem);    
        int const& v         = std::get<1>(__elem);

        // now your body
        std::cout << "k=" << k << " v=" << v << '\n';
    }
}

因此:

为什么可以从正在迭代的临时移动。

此代码中的任何地方都不会发生移动。映射是在范围内构建的,这就是您要迭代的内容。在最后一个大括号中,它超出了范围。

请注意:

我确实理解汽车的衰退

不太正确。首先,它不是所谓的“衰减”(decay)——例如,当您将数组传递给函数时,会发生衰减——它会衰减为指针。此外,<代码>自动

 类似资料:
  • 问题内容: 我有下表: 如果给定的ID不存在,我想插入具有默认Val的ID。但是,如果它已经存在,我想增加Val的值。 我有以下代码: 并且它可以工作,但是我想用一个SQL语句来完成。我可以吗? 编辑 : 从@ Xikinho90的答案,我的最终代码是 问题答案: 您可以使用插入或替换。 我认为这可以解决问题 您只需要用输入的ID替换数字 谢谢奇科

  • 1、前往如流官网,点击右上角【企业注册】 2、根据指引填写信息,提交注册申请,只有认证审批通过后企业才注册成功,审批通过或拒绝将通过短信通知你,注册成功后你将成为企业创建人。 1)填写企业信息:真实的企业全称、行业类型、人员规模 2)选择主体类型:可选企业、政府/事业单位、其他组织 3)根据选择的主体类型上传所需的营业执照、组织机构代码证、事业单位法人证书、认证授权书等图片 4)填写创建人信息:真

  • 问题内容: 我有一个水平线,我需要将每个垂直线居中。我的标记如下。每个都有一个边框,我需要物品及其内容垂直位于中间。请帮忙; 我是CSS新手。 问题答案: 我假设由于您使用的是XML声明,因此您不必担心IE或较旧的浏览器。 所以,你可以使用和像这样:

  • 问题内容: 如何将无序列表居中放置为固定宽度? 问题答案: 要使ul 居中并使li元素也居中,并使ul的宽度动态变化,请使用display:inline-block; 并将其包裹在居中的div中。

  • 问题内容: 如何使用CSS 在另一个文件中水平居中? 问题答案: 您可以将此CSS应用于内部: 当然,您不必将设置为。任何小于包含宽度的宽度都可以使用。是什么呢实际定心。 如果您以Internet Explorer 8(及更高版本)为目标,最好改用以下方法: 它将使内部元素水平居中,并且无需设置特定的 width。 这里的工作示例:

  • 我在做一个宠物项目(一种游戏)。我遇到了一个问题:当从控制台用命令调用应用程序时: 播放短的声音,但不播放长的声音。所有声音都在JAR中的“/资产”文件夹中。 音频的路径如下所示: 例如射击或跳跃。对于长音频数据,仅播放前 0.5 秒。 例如:如果您加载长度为0.834秒的声音,那么它会循环(背景音乐),声音将循环播放!(WAV 文件,0.843 秒,48 KB)。但是,如果加载 WAV 文件 2