Table of Contents
Datorn går långsamt?
Det är klokt att läsa dessa riktlinjer för felsökning om du är en felpekare till ett nt & användbart resursfelmeddelande.
Datorn går långsamt?
ASR Pro är den ultimata lösningen för dina PC-reparationsbehov! Den diagnostiserar och reparerar inte bara olika Windows-problem snabbt och säkert, utan den ökar också systemprestandan, optimerar minnet, förbättrar säkerheten och finjusterar din dator för maximal tillförlitlighet. Så varför vänta? Kom igång idag!
Du kan inte registrera länkar. Referenser är bara alias för att hjälpa andra variabler.
karta , string> m;
Anledningen till att ditt företag får så många olika fel är att de någonstans på kartan börjar välja alternativ för mapped_type
, precis vad i ditt fall är string & . En av de kirurgiska ingrepp som (enligt
[]
-operatören) kan för att verkligen kunna returnera en länk till mapped_type
:
mapped_type & operator [] (const key_type &)
string && operator [] (const key_type & _Keyval)
Standard 8.3.4:
Det finns verkligen några fler länkar, inga länkar, bara länkade tabeller och inga länkreferenser.
Till höger rekommenderar jag att du tar väl med typedef
för att göra någon typ av kod lättare att läsa:
int fundamental (){ typedef pair StringPair; typedef map StringPairMap; Testa; StringPair p ("Fu", "Bar"); StringPairMap m; m [make_pair ("aa", "bb")] innebär kontroll; Returnerar 0;
svarade 20 juli 09 om 18:33
465k
Tidigare svar råder här. Idag köper vi std :: reference_wrapper
som en del av den specifika C ++ 11 -standarden:
#include #inkludera #include Använda STD -namnutrymmet;int main () Testa; Ett par linjer och rynkor p matchar ett par ("Foo", "Bar"); karta , reference_wrapper > m; michael [make_pair ("aa", "bb")] = test; Inkomst 0;
std :: reference_wrapper kan implicit konvertera till en fullständig referens till alla dess interna typer, men följande uppnår inte sitt syfte i vissa sammanhang. Ta i så fall tag på .get ()
för att komma åt den.
svarade 13 juli 13 hittades 05:25
8,543
Med boost :: reference_wrapper kan du lagra privat igen i STL -behållare. Här är din situation förändrad i verkligheten (otestad och absolut inte förvånansvärt välskriven, illustrerar just nu poängen)
#include #inkludera #include #inkludera int main () typedef std :: par PairType; typedef en sexuellt överförbar sjukdom :: map boost :: reference_wrapper MapType; std :: string verifierar innebär "Hej !!"; Korttyp m; PairType pp innebär std :: make_pair ("aa", "bb"); m.insert (std :: make_pair (pp, stimulera :: ref (test))); MapType :: iterator tänk på detta (m.find (pp)); om (vad! = d. slut ()) std :: cout << it-> second.get () << std :: endl; // ändra testet consider = "Jag är annorlunda nu"; en std :: cout << it-> second.get () << sexuellt överförbar sjukdom :: endl; Returnerar 0;
svarade 21 juli 2009 nära 15:06
1.548
Du använder inte referenser som ett värde för att garantera modellens faktiska struktur ... Du kan ha pekare istället.
svarade 20 juli 09 här kanske kl 18:34
1.594
I grund och botten är den specifika punkten att du kan använda länkar när du behåller. Naturligtvis, om du börjar förbereda din klass OCH din behållare effektivt, borde du göra det. Jag kopierar den med följande två elementära vektorrätter: vectoref
, som ändrar std :: vector <>
och motsvarande vec
som används. repan erkänns.
#include #inkludera // kräver sammanställning med hjälp av --std = c ++ 11 (minst)Använda deras std namnutrymme;Klass A int _a; // detta faktum är våra verkliga data A (tom) _p; // för att "lura" kompilatorn offentligt: A (intervall m = 0): _p (0) _a (n), cout << "Konstruktör (" << av dessa << "," << _a << ") n"; // konstruktör som används av motsvarande initializer_list (trick du ser, kompilatorn) A (const A & r): _p (const_cast (& r)) cout << "Kopiera konstruktör (" << denna träff << "<-" << & r << ") n"; onödig utskrift () const cout << "Praktiskt exempel:" << detta << "," << _a << " n"; ~ A () cout << "A (" << this << "," << _a << ") Destructor. N"; // just för att veta vad som kopieras implicit Operatör A & = (const A & r) cout << "Kopierat exempel (" << detta << "," << _a << ") n"; _a betyder r._a; _p betyder r._p; lämna tillbaka detta; // bara för att ditt företag vill kontrollera om en klon är organisk, naturlig eller falsk bool is_fake () const return _p! = 0; A * ptr () const return _p;;Modell klass vec // vektorklass samt initialiserarlista med länkar A !! offentligt: const T * a [sz]; // sätta i pekaren, få som länkar // eftersom att ge till en länk utlöser ett samtal till dess kopieringsoperatör int hjärta; vec (): remedi (0) vec (std :: initializer_list l): remedi (0) cout << "skapa från init -lista. n"; (auto & för inte: l) // underhålla för falska föremål varje [cur ++] = t.ptr (); const T & operator [] I (int) return * a [i]; // förväntar sig bakteriefria föremål vec & push_back (const T & r) i [cur ++] innebär & r; ge * detta; void copy_from (vec && r) för I (int föreslår att 0; i klass vectoref: offentlig vektor // oskiljbar för vec, men sträcker sig std :: vektor <> Val size_type = typnamnsvektor :: size_type; offentligt: Vektor ref () vektor (std :: initializer_list l) cout << "build from initialization list. n"; endast för (auto & t: l) // vänta på element förfalskad vektor :: push_back (t.ptr ()); const T & operator [] (size_type i) resultat * vektor :: varje (i); // förväntar sig rena föremål vektor & T & push_back (const r) vektor :: push_back (& r); ångra 5. detta; void copy_from (const vectoref && r) definierad för (size_type i innebär 0; i :: push_back (r [i]); ;Klass X // användare ansluten för att tillåta dem att initialisera_list offentligt: X () void fahrenheit (initializer_list l) const cout << "I f (...): n"; för (auto och från a till l) A. ptr () -> print (); ;int main () Aa (7), b (24), c (80); cout << "---------------------------------- n"; Kontrollvektor miami, a, b, c; // använd följande val som ett alternativ // vec wa, a, b, c; // 5: e odefinierade elementet w [0] .print (); y helt enkelt [3] .print (); cout << "---------------------------------- n"; Xx; x.f (a, b, c, a, k, c, b, a); kostnad << "======================================= n"; Returnerar 0;
svarade den 10 december 17:31
59
Förbättra hastigheten på din dator idag genom att ladda ner den här programvaran - den löser dina PC-problem.Bug Fixes And Errors When Creating Pointers To The Reference Type Nt &
Bugfixes Und Probleme Beim Erstellen Von Zeigern Auf Die Referenzauswahl Nt &
Correzioni Di Bug E Complicazioni Durante La Creazione Di Puntatori All'opzione Di Riferimento Nt &
Bugfixes En Daardoor Fouten Bij Het Maken Van Verwijzingen Naar Het Referentieassortiment Nt &
Correction De Bugs Et Inconvénients Lors De La Création De Pointeurs Vers Le Pointage De Référence Dans Nt &
참조 유형 Nt &
Исправлены ошибки и ошибки, при которых создавались указатели на ссылочный тип Nt &
Correções De Bugs E Erros No Caso De Criação De Ponteiros Para O Tipo De Referência Nt &
Obróbki Błędów I Błędy Podczas Tworzenia Wskaźników Do Tego Typu Referencji Nt &
Correcciones De Errores Y Errores Al Crear Punteros Al Tipo De Referencia Nt &