秋高手指点,关于C++find_if算法以及bind函数部分的小问题!

请各位大侠过来帮忙看一看这个代码有什么问题?
我写的代码是:
#include<iostream>
//#include<sstream>
//#include<numeric>
#include<vector>
#include<algorithm>
#include <functional> 
using namespace std;

vector<string> a = { "ssd", "bbblll", "ss", "wre", "sad", "adff", "asfdsgsdg", "wetrwetgsd" };
bool check_size(const string &b, string::size_type sz)
{
return b.size() >= sz;
}

void main()
{
auto wc = std::find_if(a.begin(), a.end(), std::bind(check_size, _1, 6));
}

编译环境:visual studio 2013
报错:_1是未声明的标识符

对比MSDN中对bind函数的使用,我也并没有语法错误呀?是什么问题呢
#include <functional> 
#include <algorithm> 
#include <iostream> 

using namespace std::placeholders; 

void square(double x) 

std::cout << x << "^2 == " << x * x << std::endl; 


void product(double x, double y) 

std::cout << x << "*" << y << " == " << x * y << std::endl; 


int main() 

double arg[] = {1, 2, 3}; 

std::for_each(&arg[0], arg + 3, square); 
std::cout << std::endl; 

std::for_each(&arg[0], arg + 3, std::bind(product, _1, 2)); 
std::cout << std::endl; 

std::for_each(&arg[0], arg + 3, std::bind(square, _1)); 

return (0); 

MSDN实例代码运行正确

largeQ
浏览 458回答 2
2回答

慕婉清6462132

_1 _2 ...定义在placeholders这个namespace,所以要用 using namespace std::placeholders;
打开App,查看更多内容
随时随地看视频慕课网APP