Dies ist eine einfache Funktion, die einen Vektor von Ganzzahlen verwendet und nur die ungeraden Einträge zusammenfasst.Warum erzeugt einfache C++ - Vektorfunktion einen Index außerhalb der Grenzen?
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int f(vector<int> & n)
{
vector<int>::iterator itA;
int sum = 0;
for (itA = n.begin(); itA != n.end(); itA++)
{
if (*itA % 2 == 1) sum += *itA;
}
return sum;
}
int main()
{
vector<int> a;
a[0] = 3;
a[1] = 5;
a[2] = 6;
a[3] = 1;
cout << f(a) << endl;
system("pause");
}
Sobald er ausgeführt wird, stürzt es aufgrund Vektorindex außerhalb des zulässigen Bereichs. Warum ist das der Fall? Der Iterator beginnt bei vector.begin() und durchläuft den Vektor, während der Iterator nicht auf vector.end() zeigt, was der gesamte Vektor sein sollte.
Sie haben nicht die Größe des Vektors definiert, bevor es mit oder auch Funktion von Vektor-Container verwenden push_back – Sumeet
'Vektor a = {3, 5, 6, 1} ; 'wäre etwas einfacher, nicht zu erwähnen; würde eigentlich funktionieren;) –