Chỉ cần học C++, vì vậy tôi có thể không hiểu chính xác, nhưng tôi chỉ đọc rằng hàm chèn phạm vi trả về một trình lặp theo tiêu chuẩn mới (C++ Primer 5th Ed, cplusplus.com, cppreference.com và các câu trả lời khác nhau đề xuất sử dụng nó để duy trì hiệu lực của trình lặp).Các chức năng chèn vùng chứa của STL trở về void theo C++ 11?
Từ cppreference.com:
template< class InputIt >
iterator insert(const_iterator pos, InputIt first, InputIt last);
Tuy nhiên, mỗi phiên bản của Cygwin GCC và MinGW mà tôi đã cố gắng đã trở lại khoảng trống sử dụng -std = C++ 11. Thậm chí nhìn vào các tiêu đề, nó có vẻ như đó là cách nó được viết, và rằng không có gì tôi có thể sửa đổi để sửa chữa điều đó.
Tôi đang thiếu gì?
Đây là chức năng 'kết thúc chương tập thể dục' tôi đã cố gắng viết; thay thế một chuỗi với nhau trong một chuỗi cho trước:
(Tôi hiểu nó sẽ không hoạt động như dự định cách thức mà nó được viết)
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;
}
}
nào * phiên bản * của MinGW bạn đang sử dụng? Xin đừng nói * "mọi phiên bản" *. Điều đó không giúp được gì. Hãy cụ thể. – Nawaz
Ah, cảm ơn bạn. Bản dựng mới nhất sử dụng 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; và MinGW-TDM 4.7.1-dw2 – Habnab
Thử. GCC '4.8.0'. Nó là mới nhất! – Nawaz