वर्तमान में मैं संयोजन उत्पन्न करने की कोशिश कर रहा हूं और मैं निम्नलिखित कोड का उपयोग कर रहा हूं:Std :: प्लेसहोल्डर का उपयोग करने के लिए मुझे किन पुस्तकालयों की आवश्यकता है?
#include <vector>
#include <algorithm>
#include <iostream>
#include <functional>
template<class RandIt, class Compare>
bool next_combination(RandIt first, RandIt mid, RandIt last)
{
std::sort(mid, last, std::bind(std::less<int>(), std::placeholders::_2
, std::placeholders::_1));
return std::next_permutation(first, last, std::less<int>());
}
g ++ का प्रयोग करना यह संकलित करने में विफल रहता है:
next_combo.cpp: In function ‘bool next_combination(RandIt, RandIt, RandIt)’:
next_combo.cpp:10: error: ‘bind’ is not a member of ‘std’
next_combo.cpp:10: error: ‘std::placeholders’ has not been declared
next_combo.cpp:11: error: ‘std::placeholders’ has not been declared
मैंने सोचा था कि std :: प्लेसहोल्डर्स को कार्यात्मक में घोषित किया गया था, लेकिन अब मैं उलझन में हूँ। क्या मुझे बस बूस्ट का उपयोग करना चाहिए?
इसके अलावा बाकी प्रोजेक्ट C++ 0x का उपयोग कर रहा है, तो क्या सी ++ 0x सुविधाओं का उपयोग करके इसे लिखने का एक बेहतर तरीका है?
किसी भी मदद की बहुत सराहना की है :)
आपको उनको प्राप्त करने के लिए अपने g ++ कंपाइलर के साथ C++ 0x ध्वज का उपयोग करना होगा। या बढ़ावा :: बांधें। – Anycorn
@aaa, धन्यवाद, ऐसा लगता है कि यह मेरी समस्या का समाधान कर चुका है। – shuttle87
आप बोझिल बांध के बजाय लैम्बडा का उपयोग क्यों नहीं करते? यदि आप सी ++ 0x का उपयोग करते हैं, तो यह std :: sort (v.begin(), v.end(), [] (int l, int r) लिखना है -> बूल { वापसी l> r; }); इंटीड –