ich lerne C++, so dass ich kann nicht richtig sein zu verstehen, aber ich habe gelesen, nur dass der Bereich Insert-Funktion einen Iterator unter dem neuen Standard zurück (C++ Grundierung 5. Auflage, cplusplus.com, cppreference.com und verschiedene Antworten darauf hindeutet, es zu benutzen um die Iterator-Gültigkeit zu erhalten).STL-Container-Range-Insert-Funktionen, die unter C++ 11 void zurückgeben?
Von cppreference.com:
template< class InputIt >
iterator insert(const_iterator pos, InputIt first, InputIt last);
jedoch jede Version von Cygwin GCC und MinGW, die ich versucht habe, ist zurückgekehrt Leere mit -std = C++ 11. Selbst wenn man sich die Header anschaut, sieht es so aus, als wäre es geschrieben und es gibt nichts, was ich ändern könnte, um das zu beheben.
Was fehlt mir?
Hier ist die 'Ende des Kapitels Übung' Funktion, die ich versuchte zu schreiben; eine Saite mit einem anderen innerhalb einer bestimmten Zeichenfolge zu ersetzen:
(ich verstehe es nicht bestimmungsgemäß funktioniert so, wie es geschrieben ist)
void myfun(std::string& str, const std::string& oldStr, const std::string& newStr)
{
auto cur = str.begin();
while (cur != str.end())
{
auto temp = cur;
auto oldCur = oldStr.begin();
while (temp != str.end() && *oldCur == *temp)
{
++oldCur;
++temp;
if (oldCur == oldStr.end())
{
cur = str.erase(cur, temp);
// Here we go. The problem spot!!!
cur = str.insert(cur, newStr.begin(), newStr.end());
break;
}
}
++cur;
}
}
Welche * Version * von MinGW Sie verwenden? Bitte sag nicht "Jede Version" *. Das hilft nicht. Sei genau. – Nawaz
Ah, danke. Der neueste Build mit mingw-get-inst-20120426.exe, 4.6.2; i686-w64-mingw32-gcc-dw2-4.8.0-win32_rubenvb; x86_64-w64-mingw32-gcc-4.6.3-2-release-win64_rubenvb; und MinGW-TDM 4.7.1-dw2 – Habnab
Versuchen. GCC '4.8.0'. Es ist das Neueste! – Nawaz