సి ++ లో STL: మీరు తెలుసుకోవలసిన ప్రతిదీ



ఈ వ్యాసం మీకు C ++ లో STL యొక్క వివరణాత్మక మరియు సమగ్రమైన జ్ఞానాన్ని అందిస్తుంది మరియు విభిన్న కంటైనర్ల గురించి మీకు ఒక ఆలోచన ఇస్తుంది.

స్టాండర్డ్ మూస లైబ్రరీ (STL) అనేది సాధారణ ప్రోగ్రామింగ్ డేటా నిర్మాణాలు మరియు జాబితాలు, స్టాక్స్, శ్రేణులు వంటి ఫంక్షన్లను అందించడానికి C ++ టెంప్లేట్ తరగతుల సమితి. C ++ వ్యాసంలోని ఈ STL లో మేము ఈ క్రింది పాయింటర్లను చర్చిస్తాము:

C ++ లోని STL పై ఈ వ్యాసంతో కదులుతోంది





సి ++ టెంప్లేట్లు

C ++ మాకు టెంప్లేట్ల యొక్క లక్షణాన్ని అందిస్తుంది, ఇది ఫంక్షన్లు మరియు తరగతులను సాధారణ రకాలతో పనిచేయడానికి అనుమతిస్తుంది. ఇది ఒక ఫంక్షన్ లేదా క్లాస్ యొక్క పునర్వినియోగతను అనుమతిస్తుంది మరియు ఇది ప్రతిదానికి తిరిగి వ్రాయబడకుండా అనేక విభిన్న డేటా రకాల్లో పనిచేయడానికి అనుమతిస్తుంది.

C ++ లోని STL పై ఈ వ్యాసంతో కదులుతోంది



సాధారణ విధులు మరియు STL

చాలాసార్లు ప్రోగ్రామింగ్ చేస్తున్నప్పుడు ఒకే విధమైన కార్యకలాపాలను నిర్వహించే ఫంక్షన్‌లను సృష్టించాల్సిన అవసరం ఉంది కాని వివిధ డేటా రకాలతో పని చేస్తుంది. కాబట్టి ఈ సమస్యను అధిగమించడానికి సి ++ అనేక ఫంక్షన్లకు బదులుగా ఒకే జెనరిక్ ఫంక్షన్‌ను సృష్టించే లక్షణాన్ని అందిస్తుంది, ఇది టెంప్లేట్ పరామితిని ఉపయోగించి వేర్వేరు డేటా రకంతో పని చేస్తుంది. ఈ సాధారణ తరగతులు మరియు విధుల సేకరణను ప్రామాణిక మూస లైబ్రరీ (STL) అంటారు

ఇప్పుడు ప్రామాణిక C ++ లైబ్రరీలో భాగమైన STL యొక్క భాగాలు నేమ్‌స్పేస్ std లో నిర్వచించబడ్డాయి. అందువల్ల, వాటిని మా ప్రోగ్రామ్‌లోకి దిగుమతి చేయడానికి నేమ్‌స్పేస్ ఆదేశాన్ని ఉపయోగించాలి.

సింటాక్స్:



నేమ్‌స్పేస్ std ఉపయోగించి

ఎస్టీఎల్‌లో మూడు భాగాలు ఉన్నాయి

  • కంటైనర్లు

  • అల్గోరిథంలు

  • ఇటరేటర్లు

ఈ మూడు భాగాలు సినర్జీలో ఒకదానితో ఒకటి కలిసి వివిధ రకాల ప్రోగ్రామింగ్ పరిష్కారాలకు మద్దతునిస్తాయి. కంటైనర్లలో నిల్వ చేయబడిన ఆపరేషన్ చేయడానికి అల్గోరిథం ఇటరేటర్లను ఉపయోగిస్తుంది.

కంటైనర్ అనేది మెమరీలో డేటాను వ్యవస్థీకృత పద్ధతిలో నిల్వ చేసే వస్తువు. STL లోని కంటైనర్లు టెంప్లేట్ తరగతులచే అమలు చేయబడతాయి మరియు అందువల్ల వివిధ రకాలైన డేటాను ఉంచడానికి సులభంగా సవరించవచ్చు మరియు అనుకూలీకరించవచ్చు.

కంటైనర్లలో ఉన్న డేటాను ప్రాసెస్ చేయడానికి ఉపయోగించే ఒక విధానం అల్గోరిథం గా నిర్వచించబడింది. ప్రారంభించడం, శోధించడం, కాపీ చేయడం, క్రమబద్ధీకరించడం మరియు విలీనం చేయడం, కాపీ చేయడం, క్రమబద్ధీకరించడం మరియు విలీనం చేయడం వంటి పనులకు మద్దతు ఇవ్వడానికి STL అనేక రకాల అల్గారిథమ్‌లను కలిగి ఉంటుంది. అల్గోరిథంలు టెంప్లేట్ ఫంక్షన్ల ద్వారా అమలు చేయబడతాయి.

ఒక ఇటెరేటర్‌ను కంటైనర్‌లోని మూలకాన్ని సూచించే వస్తువుగా నిర్వచించవచ్చు. కంటైనర్లలోని విషయాల ద్వారా తరలించడానికి ఇటరేటర్లను ఉపయోగించవచ్చు. పాయింటర్ల మాదిరిగానే ఇటరేటర్లు నిర్వహించబడతాయి. మేము వాటిని పెంచవచ్చు లేదా తగ్గించవచ్చు. ఇటెరేటర్లు అల్గోరిథంను కంటైనర్లతో అనుసంధానిస్తాయి మరియు కంటైనర్లలో నిల్వ చేయబడిన డేటాను మార్చడంలో కీలక పాత్ర పోషిస్తాయి.

Container-STL-in-C++

C ++ లోని STL పై ఈ వ్యాసంతో కదులుతోంది

కంటైనర్లు

STL పది కంటైనర్లను మూడు వర్గాలుగా వర్గీకరిస్తుంది.

కంటైనర్లు

వివరణ

హెడర్ ఫైల్

ఇటరేటర్

వెక్టర్

దీనిని డైనమిక్ అర్రేగా నిర్వచించవచ్చు. ఇది ఏదైనా మూలకానికి ప్రత్యక్ష ప్రాప్యతను అనుమతిస్తుంది.

యాదృచ్ఛిక ప్రాప్యత

జాబితా

ఇది ద్వి దిశాత్మక సరళ జాబితా. ఇది ఎక్కడైనా చొప్పించడానికి మరియు తొలగించడానికి అనుమతిస్తుంది

ద్వి దిశాత్మక

మరియు

ఇది డబుల్ ఎండ్ క్యూ. రెండు చివర్లలో చొప్పించడం మరియు తొలగింపులను అనుమతిస్తుంది. ఏదైనా మూలకానికి ప్రత్యక్ష ప్రాప్యతను అనుమతిస్తుంది.

యాదృచ్ఛిక ప్రాప్యత

సెట్

ఇది ప్రత్యేకమైన సెట్లను నిల్వ చేయడానికి అసోసియేట్ కంటైనర్. వేగంగా శోధించడానికి అనుమతిస్తుంది.

ద్వి దిశాత్మక

మల్టీసెట్

ఇది ప్రత్యేకమైన కాని సెట్లను నిల్వ చేయడానికి అసోసియేట్ కంటైనర్.

ద్వి దిశాత్మక

మ్యాప్

ఇది ప్రత్యేకమైన కీ / విలువ జతలను నిల్వ చేయడానికి అసోసియేట్ కంటైనర్. ప్రతి కీ ఒక విలువతో మాత్రమే అనుబంధించబడుతుంది.

ద్వి దిశాత్మక

మల్టీమ్యాప్

కీ / విలువను నిల్వ చేయడానికి ఇది అసోసియేట్ కంటైనర్, దీనిలో ఒక కీ ఒకటి కంటే ఎక్కువ విలువలతో (ఒకటి నుండి అనేక మ్యాపింగ్) అనుబంధించబడవచ్చు. ఇది కీ-ఆధారిత శోధనను అనుమతిస్తుంది.

ద్వి దిశాత్మక

స్టాక్

ప్రామాణిక స్టాక్ లాస్ట్-ఇన్-ఫస్ట్-అవుట్ (LIFO) ను అనుసరిస్తుంది

మళ్ళి లేదు

క్యూ

ప్రామాణిక క్యూ ఫస్ట్-ఇన్-ఫస్ట్-అవుట్ (FIFO) ను అనుసరిస్తుంది

మళ్ళి లేదు

ప్రాధాన్యత-క్యూ

మొదటి మూలకం ఎల్లప్పుడూ అత్యధిక ప్రాధాన్యత మూలకం

మళ్ళి లేదు

సీక్వెన్స్ కంటైనర్లు

సీక్వెన్స్ కంటైనర్లు సరళ క్రమంలో అంశాలను నిల్వ చేస్తాయి. అన్ని అంశాలు రేఖ వెంట వాటి స్థానం ద్వారా ఒకదానితో ఒకటి సంబంధం కలిగి ఉంటాయి. వారు మూలకాన్ని చొప్పించడానికి అనుమతిస్తారు మరియు అవన్నీ వాటిపై అనేక కార్యకలాపాలకు మద్దతు ఇస్తాయి.

STL మూడు రకాల శ్రేణి అంశాలను అందిస్తుంది:

  • వెక్టర్
  • జాబితా
  • మరియు

అనుబంధ కంటైనర్లు:

కీలను ఉపయోగించి మూలకాలకు ప్రత్యక్ష ప్రాప్యతను సమర్ధించే విధంగా అవి రూపొందించబడ్డాయి. అవి వరుసక్రమంలో లేవు. నాలుగు రకాలు ఉన్నాయి

అనుబంధ కంటైనర్లు:

  1. సెట్
  2. మల్టీసెట్
  3. మ్యాప్
  4. మల్టీమ్యాప్

పైన పేర్కొన్న అన్ని కంటైనర్లు చెట్టు అని పిలువబడే నిర్మాణంలో డేటాను నిల్వ చేస్తాయి, ఇది వేగంగా సులభతరం చేస్తుంది

శోధించడం, తొలగించడం మరియు చొప్పించడం సీక్వెన్షియల్ కాకుండా. కంటైనర్ సెట్ లేదా మల్టీసెట్ వివిధ వస్తువులను నిల్వ చేయగలదు మరియు విలువలను కీలుగా ఉపయోగించి వాటిని మార్చటానికి ఆపరేషన్లను అందిస్తుంది.

మరియు మ్యాప్ లేదా మల్టీమ్యాప్‌ను జతగా వస్తువులను నిల్వ చేయడానికి ఉపయోగిస్తారు, ఒకటి కీ మరియు మరొకటి

విలువ అంటారు.

ఉత్పన్నమైన కంటైనర్లు:

STL మూడు ఉత్పన్నమైన కంటైనర్లను అందిస్తుంది, అవి స్టాక్, క్యూ మరియు ప్రాధాన్యత_క్యూ. వీటిని కంటైనర్ ఎడాప్టర్లు అని కూడా అంటారు.

ఉత్పన్నమైన కంటైనర్లు మూడు రకాలు:

1.స్టాక్

2. క్యూ

3. ప్రాధాన్యత_క్యూ

వేర్వేరు సీక్వెన్స్ కంటైనర్ల నుండి స్టాక్స్, క్యూ మరియు ప్రాధాన్యతా క్యూ సులభంగా సృష్టించవచ్చు. ఉత్పన్నమైన కంటైనర్లు ఇటరేటర్లకు మద్దతు ఇవ్వవు మరియు అందువల్ల మేము వాటిని డేటా మానిప్యులేషన్ కోసం ఉపయోగించలేము. అయినప్పటికీ, ఆపరేషన్లను తొలగించడం మరియు చొప్పించడం కోసం వారు రెండు సభ్యుల ఫంక్షన్ పాప్ () మరియు పుష్ () కు మద్దతు ఇస్తారు.

C ++ లోని STL పై ఈ వ్యాసంతో కదులుతోంది

జావా ఒక vs ఉంది

అల్గోరిథంలు

అల్గోరిథంలు అంటే వాటి కంటెంట్‌ను ప్రాసెస్ చేయడానికి వివిధ రకాల కంటైనర్‌లలో సాధారణంగా ఉపయోగించగల విధులు. ప్రతి కంటైనర్ దాని ప్రాథమిక కార్యకలాపాల కోసం విధులను అందించినప్పటికీ, మరింత విస్తరించిన లేదా సంక్లిష్టమైన కార్యకలాపాలకు మద్దతు ఇవ్వడానికి STL అరవై కంటే ఎక్కువ ప్రామాణిక అల్గారిథమ్‌లను అందిస్తుంది. ప్రామాణిక అల్గోరిథంలు ఒకే సమయంలో రెండు వేర్వేరు రకాల కంటైనర్లతో పనిచేయడానికి కూడా అనుమతిస్తాయి.

STL అల్గోరిథంలు పునర్వినియోగ తత్వాన్ని బలోపేతం చేస్తాయి. ఈ అల్గోరిథంలను ఉపయోగించడం ద్వారా, ప్రోగ్రామర్లు చాలా సమయం మరియు కృషిని ఆదా చేయవచ్చు. STL అల్గోరిథంలకు ప్రాప్యత పొందడానికి, మేము మా ప్రోగ్రామ్‌లో తప్పక చేర్చాలి.

STL అల్గోరిథం, వారు చేసే కార్యకలాపాల స్వభావం ఆధారంగా, వీటిని క్రింద వర్గీకరించవచ్చు:

  • అల్గోరిథంలను మార్చడం

  • పరివర్తన అల్గోరిథంలు

  • క్రమబద్ధీకరణ అల్గోరిథంలు

  • అల్గోరిథంలను సెట్ చేయండి

  • రిలేషనల్ అల్గోరిథం

C ++ లోని STL పై ఈ వ్యాసంతో కదులుతోంది

ఇటరేటర్లు:

ఇటిరేటర్లు పాయింటర్ల వలె పనిచేస్తాయి మరియు కంటైనర్ యొక్క అంశాలను యాక్సెస్ చేయడానికి ఉపయోగిస్తారు. కంటైనర్లలోని విషయాల ద్వారా వెళ్ళడానికి మేము ఇటరేటర్లను ఉపయోగిస్తాము. పాయింటర్ల మాదిరిగానే ఇటరేటర్లు నిర్వహించబడతాయి. మన అవసరాలకు అనుగుణంగా వాటిని పెంచవచ్చు లేదా తగ్గించవచ్చు. ఐటెరేటర్లు కంటైనర్లను అల్గోరిథంలతో అనుసంధానిస్తారు మరియు కంటైనర్లలో నిల్వ చేయబడిన డేటాను మార్చడంలో కీలక పాత్ర పోషిస్తాయి. అవి తరచూ ఒక మూలకం నుండి మరొక మూలకానికి వెళ్ళడానికి ఉపయోగిస్తారు, ఈ ప్రక్రియను కంటైనర్ ద్వారా మళ్ళించడం అంటారు.

ఐటెరేటర్లలో ఐదు రకాలు ఉన్నాయి:

1.ఇన్‌పుట్

2. అవుట్పుట్

3. ముందుకు

4. ద్వి దిశాత్మక

5.రాండం

ఇటరేటర్

ప్రాప్యత పద్ధతి

కదలిక దిశ

I / O సామర్ధ్యం

వ్యాఖ్య

ఇన్‌పుట్

లీనియర్

ఫార్వార్డ్ మాత్రమే

చదవడానికి మాత్రమే

సేవ్ చేయలేము

అవుట్పుట్

లీనియర్

ఫార్వార్డ్ మాత్రమే

మాత్రమే రాయండి

సేవ్ చేయలేము

ముందుకు

లీనియర్

ఫార్వార్డ్ మాత్రమే

చదువు రాయి

సేవ్ చేయవచ్చు

ద్వి దిశాత్మక

లీనియర్

ముందుకు మరియు వెనుకకు

చదువు రాయి

సేవ్ చేయవచ్చు

యాదృచ్ఛికం

యాదృచ్ఛికం

ముందుకు మరియు వెనుకకు

చదువు రాయి

సేవ్ చేయవచ్చు

వివిధ రకాలైన కంటైనర్లతో మాత్రమే వివిధ రకాల ఇరేటర్లను ఉపయోగించాలి

సీక్వెన్స్ మరియు అసోసియేటివ్ కంటైనర్లు ఇరేటర్స్ ద్వారా ప్రయాణించడానికి అనుమతించబడతాయి. ప్రతి రకమైన ఇరేటర్లను కొన్ని విధులు నిర్వహించడానికి ఉపయోగిస్తారు. ఇన్పుట్ మరియు అవుట్పుట్ ఇరేటర్లు తక్కువ ఫంక్షన్లకు మద్దతు ఇస్తాయి. వాటిని కంటైనర్‌లో ప్రయాణించడానికి మాత్రమే ఉపయోగించవచ్చు. ఫార్వర్డ్ ఇరేటర్స్ ఇన్పుట్ మరియు అవుట్పుట్ ఇరేటర్స్ యొక్క అన్ని ఆపరేషన్లకు మద్దతు ఇస్తుంది మరియు కంటైనర్లో దాని స్థానాన్ని కూడా కలిగి ఉంటుంది. ఒక ద్వి దిశాత్మక ఇరేటర్, అన్ని ఫార్వర్డ్ ఇరేటర్స్ ఆపరేషన్లకు మద్దతు ఇస్తున్నప్పుడు, కంటైనర్‌లో వెనుకబడిన దిశలో వెళ్ళే సామర్థ్యాన్ని అందిస్తుంది.

ఈ విధంగా మనం ‘ఎస్టీఎల్ ఇన్ సి ++’ పై ఈ వ్యాసం ముగింపుకు వచ్చాము. మీరు మరింత తెలుసుకోవాలనుకుంటే, చూడండి విశ్వసనీయ ఆన్‌లైన్ లెర్నింగ్ సంస్థ ఎడురేకా చేత. ఎడురేకా యొక్క జావా J2EE మరియు SOA శిక్షణ మరియు ధృవీకరణ కోర్సు కోర్ మరియు అధునాతన జావా భావనలతో పాటు హైబర్నేట్ & స్ప్రింగ్ వంటి వివిధ జావా ఫ్రేమ్‌వర్క్‌ల కోసం మీకు శిక్షణ ఇవ్వడానికి రూపొందించబడింది.

మాకు ప్రశ్న ఉందా? దయచేసి ఈ బ్లాగ్ యొక్క వ్యాఖ్యల విభాగంలో దీనిని ప్రస్తావించండి మరియు మేము వీలైనంత త్వరగా మిమ్మల్ని సంప్రదిస్తాము.