C++ 使用foreach在向量上迭代

C++ 使用foreach在向量上迭代,c++,vector,C++,Vector,以下代码: std::vector< int > keysDown; for each ( int currentKey in keysDown ) { } std::vectorkeysDown; 对于每个(int currentKey in keysDown) { } 正在引发intellisense错误: 1 IntelliSense: a 'for each' statement cannot operate on an expression

以下代码:

std::vector< int > keysDown;
    for each ( int currentKey in keysDown )
    {

    }
std::vectorkeysDown;
对于每个(int currentKey in keysDown)
{
}
正在引发intellisense错误:

1   IntelliSense: a 'for each' statement cannot operate on an expression of type "std::vector<int, std::allocator<int>>"
1 IntelliSense:for-each语句不能对“std::vector”类型的表达式进行操作
但它似乎正在编译和运行,有什么想法吗


似乎没有遍历向量:

void Keyboard::AddKeyToVector( int key )
{
    keysDown.push_back( key );
}

void Keyboard::RemoveKeyFromVector( int key )
{
    std::vector< int > keysDown; // Placing this here for brevity, it's declared in the class's .h and is instanciated globally
    int i;
    for( int currentKey : keysDown ) 
    {
        if( currentKey == key )
        {
            keysDown.erase(keysDown.begin()+i);
        }
        i++;
    }
}
void键盘::AddKeyToVector(int键)
{
按键向下。向后推(按键);
}
无效键盘::RemoveKeyFromVector(int键)
{
std::vectorkeysDown;//为了简洁起见,将其放在这里,它在类的.h中声明并全局实例化
int i;
用于(int currentKey:keysDown)
{
if(currentKey==key)
{
keysDown.erase(keysDown.begin()+i);
}
i++;
}
}

这是C++/CLI,不要使用它。使用<代码>为(int CurrutKEK:KEYSAST)。编译器不讲C++。它会说一些其他语言,看起来与C++类似,并且欺骗了很多像你这样的人相信他们有C++编译器。@ XEO:它在C++ + CLI模式下工作,但它也作为非标准C++中的非标准扩展。但是,当然,不要使用它。嗯,实际上,这似乎没有正确地在我的向量上迭代?这行吗?@JamesT:你的代码声明了一个新的空向量。移除
std::vector键向下行。