Permalänk
Medlem

En fråga om vektorer i c++

Jag undrar om det finns något kommando som talar om att man vill åt den sista cellen i en vektor utan att man vet vilket nummer den har.

Permalänk
Medlem

Vet ej exakt C++ syntax, men det borde bara vara objekt.length() - 1 eller liknande (då size returnerar exakt antal i vektorn)

Alltså 2 objekt ger pos [0] och [1] i vektorn medans det som sagt är 2 objekt, därav -1 för sista pos i vektorn.

Visa signatur

Citera mig för svar.
Arch Linux

Permalänk
Hedersmedlem

Om det är en std::vector är det som sagt v[v.size()-1], eller kanske *(v.end()-1), man är ute efter (där v är vektorn). Om det är ett fält, till exempel char a[10], måste man hålla reda på det själv.

Permalänk

Med en std::vector så borde man nog kunna komma åt sista positionen genom v.back().

Tillägg: Troligtvis är det inte en std::vector men så här kan man åtminstone göra med dem...

#include <iostream> #include <vector> int main() { std::vector<int> v; v.resize(3); v[0] = 5; v[1] = 7; v[2] = 2; std::cout<<"Vector original"<<std::endl; for (int i=0; i<3; i++) std::cout<<"v["<<i<<"] = "<<v[i]<<std::endl; v.back() = 9; std::cout<<"\nVector modified"<<std::endl; for (int i=0; i<3; i++) std::cout<<"v["<<i<<"] = "<<v[i]<<std::endl; }

Vector original v[0] = 5 v[1] = 7 v[2] = 2 Vector modified v[0] = 5 v[1] = 7 v[2] = 9

Permalänk
Medlem

Antar att det är std::vector du använder. I så fall ska du använda vector::back():

// Från http://www.cplusplus.com/reference/stl/vector/back/ #include <iostream> #include <vector> using namespace std; int main () { vector<int> myvector; myvector.push_back(10); while (myvector.back() != 0) { myvector.push_back ( myvector.back() -1 ); } cout << "myvector contains:"; for (unsigned i=0; i<myvector.size() ; i++) cout << " " << myvector[i]; cout << endl; return 0; }