Алгоритмы поиска.
Все алгоритмы поиска возвращают итератор на элемент, а не сам элемент.- find(begin,end,what) - ищет первый элемент со значенимем what в промежутке begin - end, где begin и end - итераторы соответствующего контейнера
- adjacent_find(start,end) - ищет два последовательных совпадающих элемента между start и end и возвращает итератор на него
- search(start,end,sbegin,send) - ищет между start и end последовательность sbegin-send
Алгоритмы сортировки
- reverse(start,end) - инвертирует элементы последовательности start-end (т.е. сортирует в обратном порядке. Если было последовательность 1 2 3, то в результате получим 3 2 1)
- random_shuffle(start,end) - сортирует элементы между start и end в случайном порядке
- sort(start,end) - сортирует элементы от start до end в порядке возврастания.
Удаления элементов
- remove(begin,end,what) - в промежутке begin-end удаляет все what
- unique(begin,end) - удаляет все дубликаты
Другие функции
- swap_ranges(start,end,start2) - меняет местами элементы от start до end с элементами от start2 до end2, end2 рассчитывается автоматом, чтобы промежуток start-end был равен промежтку start2-end2
- replace(s,e,d1,d2) - меняет в промежутке s-e все элементы d1 на элементы d2
- fill(begin,end,data) - заполнить промежуток от begin до end значением data
- copy(start,end,new_start) - копирует промежуток от start до end в new_start (все параметры - итераторы)
- count(sbegin,send,d) - подсчет количества элементов со значением d в промежутке sbegin - send
- equal(start,end,start2) - возвращает true, если start-end == start2 - end2 (количество элементов start-end равно количеству элементов start2-end2)
Пример (немного абсурдный, ну да ладно):
#include <fstream>
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
ofstream out;
char filename[20];
ifstream in;
in.open("in.txt");
if (out==NULL)
{
cout< <"Error, can`t open file"<<endl;
return 0;
}
out.open("out.txt");
if (out==NULL)
{
cout<<"Error, can`t open file"<<endl;
return 0;
}
string s;
string text;
while (in>>s)
text.append(s);
cout< <"Операции: вывести, сколько раз слово встречается в файле: 1" <<endl;
cout<<"Sort file: 2"<<endl;
cout<<"Remove dublicates:3"<<endl;
cout<<"Random sort: 4"<<endl;
cout<<"Replace world to word: 5"<<endl;
cout<<"text v obratnom poradke: 6"<<endl;
cout<<"Write to file and exit:7"<<endl;
int status=0;
string::iterator start,end;
start=text.begin();
end=text.end();
while (true)
{
switch (status)
{ case 1:
{
cout<<"enter word"<<endl;
char word[100];
cin>>word;
cout< <"Result: "<<count(start,end,*word)<<endl;
break;
};
case 2:
{
sort(start,end);
cout<<"Done"<<endl;
break;
};
case 3:
{
unique(start,end);
cout<<"Done"<<endl;
break;
};
case 4:
{
random_shuffle(start,end);
cout<<"Done"<<endl;
break;
};
case 5:
{
cout<<"enter world 1"<<endl;
char word1[100];
cin>>word1;
cout< <"enter world 2"<<endl;
char word2[100];
cin>>word2;
replace(start,end,*word1,*word2);
cout< <"Done"<<endl;
break;
};
case 6:
{
reverse(start,end);
cout<<"Done"<<endl;
break;
};
case 7:
{
out<<text<<endl;
cout<<"good bye"<<endl;
return 0;
};
}
cin>>status;
}
return 0;
}
Комментариев нет:
Отправить комментарий