ตัวอย่างเช่น:
string s = "123";
s.assign(find(s.begin(),s.end(),'2'), s.end());
มีการกำหนดพฤติกรรมของรหัสข้างต้นหรือไม่ หรือมันนำไปสู่พฤติกรรมที่ไม่ได้กำหนด?
ตัวอย่างเช่น:
string s = "123";
s.assign(find(s.begin(),s.end(),'2'), s.end());
มีการกำหนดพฤติกรรมของรหัสข้างต้นหรือไม่ หรือมันนำไปสู่พฤติกรรมที่ไม่ได้กำหนด?
คำตอบ:
ใช่. การกำหนดเวอร์ชันนี้ถูกกำหนดเป็น
template<class InputIterator> constexpr basic_string& assign(InputIterator first, InputIterator last);ข้อ จำกัด : InputIterator เป็นประเภทที่มีคุณสมบัติเป็นตัววนซ้ำอินพุต
ผลกระทบ : เทียบเท่ากับ: return มอบหมาย (basic_string (แรก, สุดท้าย, get_allocator ()));
ซึ่งแสดงการคำนวณชั่วคราวก่อนการเปลี่ยนแปลงที่เกิดขึ้น