На этом шаге мы рассмотрим алгоритмы удаления и замены элементов.
В следующей программе демонстрируется использование алгоритмов remove_copy() и replace_copy(). При ее выполнении создается последовательность символов, из которой удаляются все буквы 'т'. Затем выполняется замена всех букв 'o' буквами 'X'.
//--------------------------------------------------------------------------- #include <vcl.h> #include <iostream> #include <vector> #include <algorithm> #include <conio.h> //необходимо для getch() #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused using namespace std; std::string ToRus(const std::string &in) { char *buff = new char [in.length()+1]; CharToOem(in.c_str(),buff); std::string out(buff); delete [] buff; return out; } int main(int argc, char* argv[]) { char str[] = "Это очень простой тест."; vector<char> v, v2(30); unsigned int i; for(i=0; str[i]; i++) v.push_back(str[i]); // Демонстрация алгоритма remove_copy cout << ToRus("Входная последовательность: "); for(i=0; i<v.size(); i++) { char c[2]; c[0]=v[i];c[1]='\0'; CharToOem(c,c); cout << c; } cout << endl; // Удаляем все буквы 'т'. remove_copy(v.begin(), v.end(), v2.begin(), 'т'); cout << ToRus("После удаления букв 'т': "); for(i=0; v2[i]; i++) { char c[2]; c[0]=v2[i];c[1]='\0'; CharToOem(c,c); cout << c; } cout << endl << endl; // Демонстрация алгоритма replace_copy cout << ToRus("Входная последовательность: "); for(i=0; i<v.size(); i++) { char c[2]; c[0]=v[i];c[1]='\0'; CharToOem(c,c); cout << c; } cout << endl; // Заменяем буквы 'о' буквами 'X' replace_copy(v.begin(), v.end(), v2.begin(), 'о', 'X'); cout << ToRus("После замены букв 'о' буквами 'X': "); for(i=0; v2[i]; i++) { char c[2]; c[0]=v2[i];c[1]='\0'; CharToOem(c,c); cout << c; } cout << endl << endl; getch(); return 0; } //---------------------------------------------------------------------------
Результаты выполнения этой программы представлены на рисунке 1.
Рис.1. Результат работы приложения
На следующем шаге мы рассмотрим алгоритм реверсирования последовательности.