Auch noch ne kleine Ergänzung dazu:
Die Anzahl im Konstruktor anzugeben, bringt oft einen Nebeneffekt mit, den man nicht erwartet. Es werden dabei schon n Objekte erstellt und im Vector angelegt. Da du diese aber nachher sowieso überschreibst, ist das sinnlos.
Ein bzw. der Vorteil von Vectoren ist ja, dass man sich um die Größe (meist) nicht wirklich kümmern muss.
Das einzige, was manchmal sinnvoll sein kann ist ein vec.reserve(n). Damit wird Speicher für n Elemente angefordert und bei großen Datenmengen kann die kontinuierliche Anforderung von Speicher den ein oder anderen Algo merkbar verlangsamen.
Da du auch noch nach einer anderen Lösung fragst, hier mal die etwas mehr C++'sche:
Code:
#include <fstream>
#include <vector>
#include <algorithm>
#include <string>
#include <iterator>
const char* OPEN_FILENAME = "foo.txt";
int main()
{
std::vector<std::string> lines;
std::ifstream open_file(OPEN_FILENAME);
if(open_file)
{
std::copy(std::istream_iterator<std::string>(open_file), std::istream_iterator<std::string>(), std::back_inserter(lines));
}
}
Gruß
Gruß