मैं दोनों एंडपॉइंट्स सहित, [first, last]
श्रेणी को विभाजित करना चाहता हूं। मैंfirst
से पहले और last
के तत्व को iterators की है। मैं इसे splice_after()
के साथ कर सकता हूं लेकिन केवल रैखिक समय में।std :: forward_list के साथ निरंतर समय में रेंज स्प्लिस कैसे करें?
मैं इस जोड़ निरंतर समय में किया जा सकता belive। मैं इसे std::forward_list
के साथ कैसे कर सकता हूं?
प्रश्न स्पष्ट नहीं है, यहाँ के रूप में मेरी समस्या दिखा एक उदाहरण कोड है:
कोड पर Live Work Space
#include <algorithm>
#include <forward_list>
#include <iostream>
#include <iterator>
using namespace std;
int main() {
forward_list<char> trg{'a','b','c'};
forward_list<char> src{'1','2','3','4'};
auto before_first = src.begin();
auto last = find(src.begin(), src.end(), '4');
cout << "before_first = " << *before_first << ", last = " << *last << "\n";
// trg.splice(trg.begin(), src, before_first, last); // no such splice
auto end = last;
++end; // Ouch! splice has to find last again although I already had it :(
trg.splice_after(trg.begin(), src, before_first, end);
cout << "Target after splice:\n";
copy(trg.begin(), trg.end(), ostream_iterator<char>(cout," "));
cout << "\nSource after splice:\n";
copy(src.begin(), src.end(), ostream_iterator<char>(cout," "));
cout << endl;
}
आउटपुट:
before_first = 1, last = 4
Target after splice:
a 2 3 4 b c
Source after splice:
1
जीसीसी libstdC++ निरंतर समय में इस करता है, लेकिन विजुअल C++ नहीं करता है। ([क्यों] (http://msdn.microsoft.com/en-us/library/vstudio/ee373562%28v=vs.110%29.aspx): _ अगर तीसरा सदस्य फ़ंक्शन एन तत्वों को सम्मिलित करता है, और दाएं! = यह , कक्षा पुनरावर्तक का एक वस्तु बढ़ी है N times_) – neam
@tim आप यह कहां जीसीसी करते हैं? कृपया लिंक दें। – Ali
[यहां] (http://gcc.gnu.org/onlinedocs/gcc-4.6.2/libstdc++/api/a00484.html#a90ae2ddea9cebf2b29f7399683dc3e20) (क्षमा करें मैं आपको लिंक देना भूल गया) – neam