Ich habe std::vector
, die meine eigene Klasse enthält und ich muss auf seine Funktionen und Lücken zugreifen.C++ Zugriff auf Vektor
class A
{
private:
int var;
vector<string> vec;
public:
void setVar(int i) { var = i; }
void setVec(vector<string> a) { vec = a; }
};
Ich habe auch Funktionen zurück, aber ich habe nicht die Mühe, sie zu tippen. Und ich habe alle notwendigen Dateien aufgenommen.
int main()
{
vector<A> vec;
for (int i = 0; i < 10; i++)
{
A tmp;
tmp.setVar(i);
vec.push_back(tmp);
}
for (int i = 0; i < 10; i++)
{
vector<string> tmp;
tmp.push_back("1");
tmp.push_back("2");
tmp.push_back("3");
vec.at(i).setVec(tmp); //Works sometimes or causes error std::out_of_range
vec[i].setVec(tmp); //Crashes the whole programm
}
}
So wie ich da die vector
diese Variablen gesetzt initialisiert?
Ich benutze g ++ und das ist nicht wirklich Code, weil mein tatsächlicher Code chaotisch ist.
Error for vec.at(i).setVec(tmp);
Error is: terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check
Dieser Code wird nicht für mich kompilieren. Sind Sie sicher, dass das Setup von 'tmp' hier Ihr tatsächlicher Code ist? Wenn ich das repariere, um etwas Gültiges zu tun, um 3 'string's im' vector' zu erstellen, läuft dieser Code gut. –
Mit dem aktualisierten Code sehe ich keinen Grund, dass dies fehlschlagen sollte. Ist der Code, den Sie hier geschrieben haben, für Sie abgestürzt? –