OSX forrange 循环上的 C++ VS 代码

Posted

技术标签:

【中文标题】OSX forrange 循环上的 C++ VS 代码【英文标题】:C++ VS Code on OSX forrange loop 【发布时间】:2021-09-29 21:29:14 【问题描述】:

我被 VS Code 中的 forrange 循环卡住了。它给了我错误:

期望一个';'

期待一个表达式

VS Code C++ error

   mp[0] = 10;
   mp[1] = 200;
   mp[2] = 3000;
   mp[3] = 40000;

   for (int id : mp) // error for ":" and ")"
   
       std::cout << id << std::endl;
   

【问题讨论】:

你在迭代一个map,你需要使用map的key-value-pair类型。 看看map的value_type是什么。这不是整数。 不发代码图片,发代码 请查看我的下一条评论 感谢 Eljay 我终于找到了解决方案 + 这个话题:https://***.com/questions/51046803/visual-studio-code-c11-extension-warning 【参考方案1】:

如果mpstd::map&lt;int,int&gt;,那么您的for 循环类型错误,它不仅仅是int,而是每个元素的键/值对。你可以使用

for (auto const& item : mp)

    std::cout << item.first << ' ' << item.second << std::endl;

其中.first 是键,.second 是值。

【讨论】:

【参考方案2】:

谢谢你的回答,科里 但问题仍然存在:

缺少显式类型(假定为“int”)[13,21]

引用变量“item”需要一个初始化器 [13,27]

期望表达式 [13,31]


    std::map<int, int> mp;
    mp[0] = 10;
    mp[1] = 200;
    mp[2] = 3000;
    mp[3] = 40000;

    for (auto const &item : mp) // error for "&" and ":" and ")"
    
        std::cout << item.first << ' ' << item.second << std::endl;
    

Visual Studio Code c++11 extension warning - OSX Macbook

【讨论】:

你在编译-std=c++17标志吗?

以上是关于OSX forrange 循环上的 C++ VS 代码的主要内容,如果未能解决你的问题,请参考以下文章

Golang basic_leaming3 流程控制

如何在 OSX 上的 C++ 应用程序中播放合成器声音?

Bdb 在并发写入时崩溃,c++ linux/osx

c++ 获取支持的相机分辨率和帧速率 OSX

osx上的c ++未捕获异常

VS2010 上的基本 C++ 多线程示例