Sie scheinen das Argument des Vektorkonstruktors, den Sie aufrufen, falsch zu verstehen. _list(0)
initialisiert _list
mit der Länge Null, wobei der Standardwert für den Typ int verwendet wird, der ebenfalls Null ist, der aber irrelevant ist, wenn der Vektor keine Elemente enthält. Das Element Werte wird nicht explizit auf Null gesetzt. Vielleicht wollten Sie, dass der Konstruktor einen bestimmten Wert eine bestimmte Anzahl von Malen wiederholt? Wenn dies der Fall ist, müssen Sie die gewünschte Länge als erstes Argument übergeben und den Wert für das zweite Argument wiederholen. Diese Konstruktion wirkt sich nicht auf eine nachfolgende Größenänderung zur Erweiterung des Vektors aus, die die neuen Vektorelemente mit dem Standardwert füllen wird (oder einen anderen Wert, wenn Sie einen als zusätzliches Argument für vector::resize
angeben).
Hier ist ein Beispiel zu veranschaulichen, basierend auf Ihren Code, der zuerst den Vektor mit dem Wert initialisiert 10
für Länge zu wiederholen 5, und passt die Größe dann den Vektor Länge 10.
#include <iostream>
#include <vector>
class Program
{
public:
Program() : _list(0) { }
Program(unsigned long size, int value) : _list(size, value) { }
void ResizeList(unsigned long size)
{
_list.resize(size);
}
void PrintList() const
{
std::cout << "_list = ";
for (const auto& val : _list)
{
std::cout << val << ", ";
}
std::cout << std::endl;
}
private:
std::vector<int> _list;
};
int main()
{
Program p(5, 10);
p.PrintList();
p.ResizeList(10);
p.PrintList();
return 0;
}
Ausgang:
_list = 10, 10, 10, 10, 10,
_list = 10, 10, 10, 10, 10, 0, 0, 0, 0, 0,
Ihre Frage ist schwer zu verstehen. Der Vektor, den Sie gepostet haben, hat keine Einträge - der Vektor wird einfach nicht von selbst angepasst. Sie müssen dazu eine der Funktionen des Vektors aufrufen, wie zum Beispiel 'push_back',' insert', 'emplace_back',' resize'. Wenn Sie diese Funktionen aufrufen, steuern Sie, was im Vektor platziert wird. – PaulMcKenzie
Da der führende Unterstrich eine Konvention ist, die für die benutzerdefinierten Bezeichner der Implementierung im globalen Namespace verwendet wird, wird dies normalerweise für die eigenen Bezeichner vermieden. Eine allgemeine Konvention für Elementvariablen ist die in der Boost-Bibliothek verwendete, mit einem abschließenden Unterstrich. –
Bitte klären Sie die Frage. –