Gå til innhold

Kopiere chars inn i en STL-vector


Anbefalte innlegg

Kan noen forklare meg hvorfor dette ikke fungerer?

 

   
vector <char> buffer;
int beta = 4;
char start[5] = {'S','T','A','R','T'};

// legg start til i bufferet
copy(start, start + 5, buffer.end());

// og kanskje beta
if (beta < 5){
  copy((char*)&beta , ((char*)&beta) + 4, buffer.end());
} 

Lenke til kommentar
Videoannonse
Annonse

Det er på den første ledige plassen jeg ønsker å sette dette inn. Det må være bak siste (opptatte) plass, så vidt jeg forstår. Når vectoren ikke inneholder noen elementer, så mener jeg buffer.begin() og buffer.end() pekker til samme plassen.

 

buffer.begin() fungerer vel på den første, men ikke på den andre, da den hele tiden vil "peke" til 'S'.

 

Eller har jeg misforstått noe alvorlig?

Lenke til kommentar
Det er på den første ledige plassen jeg ønsker å sette dette inn. Det må være bak siste (opptatte) plass, så vidt jeg forstår. Når vectoren ikke inneholder noen elementer, så mener jeg buffer.begin() og buffer.end() pekker til samme plassen.

 

buffer.begin() fungerer vel på den første, men ikke på den andre, da den hele tiden vil "peke" til 'S'.

 

Eller har jeg misforstått noe alvorlig?

Jeg tror det du sier stemmer.

dersom vector.size() == 0, så er vector.begin() == vector.end();

Men så setter jo du inn noen elementer først, før du prøver å sette inn noen elementer i plassen etter siste element (som antakelig er udefinert)

Bytt ut vector.end() med back_inserter(vector)

 

Merk: jeg bruker vector som navn der du bruker buffer.

 

back_inserter er dokumentert her:

http://msdn.microsoft.com/library/default....ackinserter.asp

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...