加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何使用std :: ref?

发布时间:2020-12-16 03:04:55 所属栏目:百科 来源:网络整理
导读:使用std :: ref的正确方法是什么?我尝试以下代码在VS2010,它不编译: #include vector#include algorithm#include iostream#include functionalusing namespace std;struct IsEven{ bool operator()(int n) { if(n % 2 == 0) { evens.push_back(n); return
使用std :: ref的正确方法是什么?我尝试以下代码在VS2010,它不编译:
#include <vector>
#include <algorithm>
#include <iostream>
#include <functional>
using namespace std;
struct IsEven
{
    bool operator()(int n) 
    {
        if(n % 2 == 0)
        {
            evens.push_back(n);
            return false;
        }

        return true;
    }

    vector<int> evens;
};
int main(int argc,char **argv)
{
    vector<int> v;
    for(int i = 0; i < 10; ++i)
    {
        v.push_back(i);
    }

    IsEven f;
    vector<int>::iterator newEnd = remove_if(v.begin(),v.end(),std::ref(f));
    return 0;
}

错误:

c:program files (x86)microsoft visual studio
10.0vcincludexxresult(28): error C2903: ‘result’ : symbol is neither a class template nor a function template

c:program files (x86)microsoft visual studio
10.0vcincludexxresult(28): error C2143: syntax error : missing ‘;’ before ‘<‘

再加一些…

解决方法

在Visual C 10.0执行std :: ref中有一个错误或一组错误.

据报导,Visual C 11已被修复;看我的earlier question about it.

微软的STL回答说:“我们已经解决了这个问题,修复程序将在VC11 RTM中提供(但是,修复程序没有进入VC11 Beta版本).”

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读