A C ++ स्ट्रिंग के सॉर्टिंग अक्षर


86

अगर मेरे पास एक स्ट्रिंग है तो पात्रों को छाँटने के लिए एक फंक्शन बनाया गया है या क्या मुझे खुद लिखना होगा?

उदाहरण के लिए:

string word = "dabc";

मैं इसे बदलना चाहूंगा ताकि:

string sortedWord = "abcd";

शायद चार का उपयोग करना एक बेहतर विकल्प है? मैं इसे C ++ में कैसे करूंगा?


7
किस बारे में std::sort?
ड्रीमलैक्स

ध्यान दें कि किसी भी प्रकार के भोले चार मूल्य आधारित छंटनी UTF-8 के साथ टूटती है - अपने तार के आधार पर आप लोकेल को ध्यान में रखना चाह सकते हैं।
क्रिश्चियन सेवेरिन

जवाबों:


149

नहीं है एक छँटाई एल्गोरिथ्म मानक पुस्तकालय में, शीर्षक में <algorithm>। यह प्रकार को निष्क्रिय करता है, इसलिए यदि आप निम्न कार्य करते हैं, तो आपका मूल शब्द छाँट दिया जाएगा।

std::sort(word.begin(), word.end());

यदि आप मूल को खोना नहीं चाहते हैं, तो पहले एक प्रतिलिपि बनाएँ।

std::string sortedWord = word;
std::sort(sortedWord.begin(), sortedWord.end());

क्या होगा यदि हम बढ़ते क्रम में छंटनी चाहते हैं?
कमरा

3
@madhuspot std::sortडिफ़ॉल्ट रूप से वर्णानुक्रम में बढ़ते क्रम में। मान कि एक छोटी सी टाइपो है और आप चाहते डी आदेश बढ़ती उपयोग किए जाने वाले संस्करण std::sortहै कि एक लेता है Compareइसके तीसरे तर्क के रूप में और आपूर्ति std::greaterडिफ़ॉल्ट के बजाय std::less। डिफ़ॉल्ट रूप std::stringसे charप्रकार का उपयोग करता है std::sort(sortedWord.begin(), sortedWord.end(), std::greater<char>());- जैसे कि "abcd" के बजाय मूल प्रश्न में "dcba" का परिणाम देगा।
टॉमी

3
@ कामध्वज या std :: रिवर्स
विंसेंट

15
std::sort(str.begin(), str.end());

यहाँ देखें


10
यह सबसे अच्छा तरीका है ... यदि स्ट्रिंग एक एकल बाइट एन्कोडिंग का उपयोग कर रही है। अन्यथा आप उनके घटक बाइट्स में अलग-अलग वर्णों को तोड़ देंगे।
बेन Voigt

2

आपको sortफ़ंक्शन को शामिल करना होगा जो कि algorithmहेडर फ़ाइल में है जो c ++ में एक मानक टेम्पलेट लाइब्रेरी है।

उपयोग : std :: सॉर्ट (str.begin (), str.end ());

#include <iostream>
#include <algorithm>  // this header is required for std::sort to work
int main()
{
    std::string s = "dacb";
    std::sort(s.begin(), s.end());
    std::cout << s << std::endl;

    return 0;
}

उत्पादन:

abcd


1

आप सॉर्ट () फ़ंक्शन का उपयोग कर सकते हैं । एल्गोरिथ्म हेडर फ़ाइल में सॉर्ट () मौजूद है

        #include<bits/stdc++.h>
        using namespace std;


        int main()
        {
            ios::sync_with_stdio(false);
            string str = "sharlock";

            sort(str.begin(), str.end());
            cout<<str<<endl;

            return 0;
        }

आउटपुट:

achklors

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.