Ich erwarte, dass die Ausgabe:Wie kann ich meinen Stack nicht überlaufen lassen?
acej
, die mit diesem Algorithmus funktioniert gut, aber es ist ein Problem, mit dem Ergebnis ausgibt und dieses Problem verursacht Stapel überlaufen.
Wie behebe ich es?
#include <iostream>
#include <vector>
std::vector<char> charAt(std::vector<char> str)
{
std::vector<char> result;
result.resize(str.size());
for (int i = 0; i < str.size(); i++)
{
if (i % 2 == 0)
{
for (int j = 0; j < str.size(); j++)
{
if (result[j] == '\0')
{
result[j] = str[i];
break;
}
}
}
}
return result;
}
std::ostream& operator<<(std::ostream& stream, std::vector<char> vector)
{
stream << "Vector: " << vector << std::endl;
return stream;
}
int main() {
std::vector<char> foo = { 'a', 'b','c','d','e','f','j' };
std::vector<char> bar = charAt(foo);
std::cout << bar << std::endl;
}
können Sie auch ein minimales * Arbeits bieten * Beispiel dafür, wie Sie Instanziierung und diese nennen? – zmo
'stream <<" Vektor: "<< vector << std :: endl;' Was haben Sie erwartet, dass dies zu tun? –
Ich glaube nicht, dass Sie einen Stapelüberlauf haben, sondern einen einfachen Fehler. Ein Vektor von Zeichen ist keine Zeichenkette. Wie kommt es also zu der Annahme, dass sie '' 0'' enthält? – Lundin