РУКОВОДСТВО ПО СТАНДАРТНОЙ БИБЛИОТЕКЕ ШАБЛОНОВ (STL)
Шрифт:
}
incl2.cpp
#include ‹stl.h›
#include ‹iostream.h›
#include ‹string.h›
bool compare_strings(const char* s1_, const char* s2_) {
return ::strcmp(s1_, s2_) ‹ 0 ? 1: 0;
}
char* names[] = {"Todd", "Mike", "Graham", "Jack", "Brett"};
int main {
const unsigned nameSize = sizeof(names)/sizeof(names[0]);
vector‹char*› v1(nameSize);
for (int i = 0; i ‹ v1.size; i++) {
v1[i] = names[i];
}
vector‹char*› v2(2);
v2[0] = "foo";
v2[1] = "bar";
sort(v1.begin, v1.end, compare_strings);
sort(v2.begin, v2.end, compare_strings);
bool inc = includes(v1.begin, v1.end, v2.begin, v2.end, compare_strings);
if (inc) cout ‹‹ "v1 includes v2" ‹‹ endl;
else cout ‹‹ "v1 does not include v2" ‹‹ endl;
v2[0] = "Brett";
v2[1] = "Todd";
inc = includes(v1.begin, v1.end, v2.begin, v2.end, compare_strings);
if (inc) cout ‹‹ "v1 includes v2" ‹‹ endl;
else cout ‹‹ "v1 does not include v2" ‹‹ endl;
return 0;
}
search1.cpp
#include ‹stl.h›
#include ‹iostream.h›
int main {
typedef vector‹int› IntVec;
IntVec v1(10);
iota(v1.begin, v1.end, 0);
IntVec v2(3);
iota(v2.begin, v2.end, 50);
ostream_iterator‹int› iter(cout, " ");
cout ‹‹ "v1: ";
copy(v1.begin, v1.end, iter);
cout ‹‹ endl;
cout ‹‹ "v2: ";
copy(v2.begin, v2.end, iter);
cout ‹‹ endl;
IntVec::iterator location;
location = search(v1.begin, v1.end, v2.begin, v2.end);
if (location == v1.end) cout ‹‹ "v2 not contained in v1" ‹‹ endl;
else cout ‹‹ "Found v2 in v1 at offset: " ‹‹ location - v1.begin ‹‹ endl;
iota(v2.begin, v2.end, 4);
cout ‹‹ "v1: ";
copy(v1.begin, v1.end, iter);
cout ‹‹ endl;
cout ‹‹ "v2: ";
copy(v2.begin, v2.end, iter);
cout ‹‹ endl;
location = search(v1.begin, v1.end, v2.begin, v2.end);
if (location == v1.end) cout ‹‹ "v2 not contained in v1" ‹‹ endl;
else cout ‹‹ "Found v2 in v1 at offset: " ‹‹ location - v1.begin ‹‹ endl;
return 0;
}
istmit2.cpp
#include ‹iostream.h›
#include ‹fstream.h›
#include ‹stl.h›
typedef vector‹char› Line;
void printLine(const Line* line_) {
vector‹char›::const_iterator i;
for (i = line_-›begin; i!= line_-›end; i++) cout ‹‹ *i;
cout ‹‹ endl;
}
int main {
Line buffer;
vector‹Line*› lines;
ifstream s("data.txt");
s.unsetf(ios::skipws); // Disable white-space skipping.
istream_iterator‹char, ptrdiff_t› it1(s); // Position at start of file.
istream_iterator‹char, ptrdiff_t› it2; // Serves as "past-the-end" marker.
copy(it1, it2, back_inserter(buffer));
Line::iterator i = buffer.begin;
Line::iterator p;
while (i != buffer.end) {
p = find(i, buffer.end, '\n');
lines.push_back(new Line(i, p));
i = ++p;
}
sort(lines.begin, lines.end, less_p‹Line*›);
cout ‹‹ "Read " ‹‹ lines.size ‹‹ " lines" ‹‹ endl;
vector‹Line*›::iterator j;
for(j = lines.begin; j!= lines.end; j++) printLine(*j);
release(lines.begin, lines.end); // Release memory.
return 0;
}
alloc1.cpp
#include ‹stl.h›
#include ‹ospace/stl/examples/myaloc.h›
int main {
{
cout ‹‹ "vectors:" ‹‹ endl;
os_my_allocator‹int› alloc;
vector‹int› v3(alloc);
Поделиться:
Популярные книги
Гарем вне закона 18+
1. Гарем вне закона
Фантастика:
фэнтези
юмористическая фантастика
6.73
рейтинг книги
Законы Рода. Том 6
6. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Санек
1. Санек
Фантастика:
попаданцы
альтернативная история
4.00
рейтинг книги
Ярость Богов
3. Мир Вальдиры
Фантастика:
фэнтези
рпг
9.48
рейтинг книги
Третье правило дворянина
3. Истинный дворянин
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Ученик. Книга третья
3. Ученик
Фантастика:
фэнтези
7.64
рейтинг книги
Кодекс Охотника. Книга XV
15. Кодекс Охотника
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Большая Гонка
16. Другая сторона
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Краш-тест для майора
3. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
эро литература
6.25
рейтинг книги
Дикая фиалка Юга
Фантастика:
фэнтези
5.00
рейтинг книги
Идеальный мир для Социопата 4
4. Социопат
Фантастика:
боевая фантастика
6.82
рейтинг книги
Вперед в прошлое 6
6. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Специалист
17. Другая сторона
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Жена по ошибке
Любовные романы:
любовно-фантастические романы
7.71