बस मस्ती के लिए, मैं सबसे सरल छँटाई एल्गोरिथ्म कल्पना को लागू किया है मैं इस कदम अर्थ विज्ञान के साथ प्रदर्शन में सुधार करना चाहता था:एक साहचर्य कंटेनर से बाहर ले जाने से तत्व
template<typename Iterator>
void treesort(Iterator begin, Iterator end)
{
typedef typename std::iterator_traits<Iterator>::value_type element_type;
// move data into the tree
std::multiset<element_type> tree(std::make_move_iterator(begin),
std::make_move_iterator(end));
// move data out of the tree
std::move(tree.begin(), tree.end(), begin);
}
लेकिन यह एक महत्वपूर्ण तरीके से प्रदर्शन को प्रभावित नहीं किया है, भले ही मैं कर रहा हूँ सॉर्टिंग std::string
एस।
तब मैं याद आया कि साहचर्य कंटेनरों बाहर से लगातार कर रहे हैं, कि, std::move
है और std::copy
यहाँ एक ही बात करना होगा :(वहाँ पेड़ से डेटा स्थानांतरित करने के लिए किसी भी अन्य रास्ता नहीं है?
आप हमें क्या तार आप छँटाई कर रहे हैं पर कुछ अधिक जानकारी दे सकते हैं? क्या आप शायद हमारे परीक्षण कोड को हमारे साथ खेलने के लिए पोस्ट कर सकते हैं? – templatetypedef
ऐसा लगता है कि आप कुछ ऐसा अनुकूलित करने का प्रयास कर रहे हैं जिसे आप जानते हैं जिसे आसानी से 'qsort' का उपयोग करके अनुकूलित किया जा सकता है। ऐसा करने का उद्देश्य क्या है? चाल semantics के बारे में सीखना? – svick
@ एसविक हाँ, मेरा प्राथमिक सवाल यह है कि: यदि मैं उन्हें वहां और आवश्यकता नहीं है तो मैं तत्वों को एक सहयोगी कंटेनर से कैसे हटा सकता हूं? मुझे यकीन है कि सामान्य प्रश्न मेरे बेवकूफ Treesort उदाहरण से आगे निकलता है :) मैंने प्रश्न के शीर्षक को संशोधित किया और आवंटक बिट हटा दिया, धन्यवाद। – fredoverflow