MS C++的for each关键字

本文提供了一个使用C++生成并排序随机整数数组的示例代码。该程序利用了标准库中的向量容器与排序算法,演示了如何生成随机数并将它们按升序排列。
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <vector>
#include <ctime>
#include <algorithm>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
    std::vector<int> vecs;
    srand(time(NULL));
    for(int i=0;i<20;i++)
    {
        vecs.push_back(rand()%20);
    }
    sort(vecs.begin(),vecs.end());
    for each(int x in vecs)
    {
        cout<<x<<' ';
    }
    system("pause");
    return 0;
}
for each的vecs参数必须是容器。

<think>好的,我现在需要解决用户的问题,即确定C++中`for each`关键字所属的标准版本。首先,我需要回忆自己关于C++标准的知识。 我记得C++有不同的标准版本,比如C++98、C++03、C++11等。用户提到的`for each`可能和某个特定版本相关。根据引用[2],用户提供的代码示例中使用了`for each(int x in vecs)`,这看起来像是微软特有的语法,因为标准C++中的范围for循环语法是不同的,通常是`for (auto x : vecs)`。这说明`for each`可能不是C++标准的一部分,而是MSVC的扩展。 接下来,我需要验证这个猜测。查阅资料的话,C++11引入了基于范围的for循环,语法为`for (auto& x : container)`,而微软的`for each`是在C++/CLI中的特性,或者说是MSVC编译器的一个扩展,并不属于ISO C++标准。因此,用户提到的`for each`应该属于微软的扩展,而不是任何标准版本,比如C++11、C++14等。 另外,引用[1]提到C++11增加了新特性,但没有提到`for each`作为关键字,而引用[3]中的C++关键字列表里也没有`for each`,进一步确认它不是标准关键字。因此,正确的结论是`for each`是微软特定的,不属于任何ISO C++标准版本,而C++11及以后的标准使用的是基于范围的for循环语法。</think>关于C++中`for each`关键字的标准版本信息如下: ### 核心结论 `for each`**不是ISO C++标准的关键字**,而是**Microsoft Visual C++MSVC)特有的语法扩展**。其代码示例(引用[2])展示的`for each(int x in vecs)`属于MSVC的非标准实现[^2]。 ### 标准替代方案 C++11标准正式引入了**基于范围的for循环**(range-based for loop),语法格式为: $$ \text{for (auto\& element : container)} $$ 例如: ```cpp std::vector<int> vec = {1,2,3}; for (auto& x : vec) { std::cout << x << ' '; } ``` 该语法通过遍历容器的迭代器实现,具有更好的兼容性和标准化支持[^1]。 ### 关键区别对比 | 特性 | `for each` (MSVC扩展) | C++11范围for循环 | |---------------------|------------------------------|--------------------------| | 语法格式 | `for each (type var in container)` | `for (auto& var : container)` | | 标准支持 | 仅限MSVC编译器 | 符合ISO C++11标准 | | 容器类型要求 | 依赖MSVC内部实现 | 需支持`begin()`/`end()`迭代器 |
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值