bool pred(int k, int l, int num1, int num2)
{
return (num1 < num2);
}
int main()
{
vector <int> nums;
for (int i=50; i > 0; --i)
{
nums.push_back(i);
}
std::sort (nums.begin(), nums.end(), boost::bind(&pred, 5, 45));
}
나는 부스트 초보자입니다. boost :: bind를 사용하는 법을 배우고 있었고 정수 벡터를 정렬하고 벡터에서 45보다 크고 5보다 작은 모든 요소를 없애고 싶었습니다. 힘든 시간을 보냈습니다. 아무도 내가 그것을 도울 수 있다면 좋을까?boost :: bind를 사용하여 정렬
내가 문제를 직면하는 이유는 벡터 요소를 벡터를 통해 반복하면서 벡터 요소를 제거하려고 시도하기 때문입니다. 내가 먼저 정렬 한 다음 요소를 제거하면 훨씬 더 쉬울 것입니다. 그러나 나는 이런 식으로하고 싶다. 어떤 도움을 주셔서 감사합니다.
나는 당신이 향상에 자리 표시자를 포함 할 필요가 있다고 생각합니다 : : 바인드 표현식 : boost :: bind (& outOfRange, 5, 45, _1) – zdan
그래, 알 겠어. 나는 그것을 고치고 실제로 동시에 사물을 단순화 할 것이다. – ephemient
'boost :: lambda'는'boost :: bind'보다 훨씬 유용합니다 :'std :: erase_if (nums.begin(), nums.end(), _1 < 5 || _1 > 45);'오류 메시지가 잘못 나온다면 무서운 것들입니다! – bdonlan