题目:从字符串中删除相同的相邻字符。 初步实现: void remove_duplicate_adjacent(wstring &s) { wstring::iterator it1, it2; it1 = it2 = s.begin(); it2++; for (;it2 != s.end();) { if (*it1 == *it2) { s.erase(it2); } else { it1++; it2++; } } } 进一步: template <class T> void remove_duplicate_adjacent(T &value) { T::iterator it1, it2; it1 = it2 = value.begin(); it2++; for (; it2 != value.end(); ) { if (*it1 == *it2) { it2 = value.erase(it2); } else { it1++; it2++; } } } 第二次用了模板,另外删除元素时用的代码也有差异,这是因为删除某个元素后其后的iterator有可能会invalidate,比如vector。