Чтение онлайн

ЖАНРЫ

РУКОВОДСТВО ПО СТАНДАРТНОЙ БИБЛИОТЕКЕ ШАБЛОНОВ (STL)

Менг Ли

Шрифт:

 str.remove('x');

 for (i = str.begin; i != str.end; i++) cout ‹‹ *i;

 cout ‹‹ endl;

 cout ‹‹ "uniqued: ";

 str.unique;

 for (i = str.begin; i != str.end; i++) cout ‹‹ *i;

 cout ‹‹ endl;

 cout ‹‹ "sorted: ";

 str.sort;

 for (i = str.begin; i != str.end; i++) cout ‹‹ *i;

 cout ‹‹ endl;

return 0;

}

parsrtc2.cpp

#include ‹stl.h›

#include ‹iostream.h›

#include ‹string.h›

bool str_compare(const char* a_, const char* b_) {

 return ::strcmp(a_, b_) ‹ 0 ? 1: 0;

}

char* names[] = {"aa", "ff", "dd", "ee", "cc", "bb"};

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];

 ostream_iterator‹char*› iter(cout, " ");

 copy(v1.begin, v1.end, iter);

 cout ‹‹ endl;

 vector‹char*› result(5);

 partial_sort_copy(v1.begin, v1.end, result.begin, result.end, str_compare);

 copy(v1.begin, v1.end, iter);

 cout ‹‹ endl;

 return 0;

}

vec6.cpp

#include ‹iostream.h›

#include ‹stl.h›

int array[] = {1, 4, 9, 16, 25, 36};

int main {

 vector‹int› v(array, array + 6);

 for (int i = 0; i ‹ v.size; i++) cout ‹‹ "v[" ‹‹ i ‹‹ "] = " ‹‹ v[i] ‹‹ endl;

 cout ‹‹ endl;

 v.erase(v.begin); // Erase first element.

 for (i = 0; i ‹ v.size; i++) cout ‹‹ "v[" ‹‹ i ‹‹ "] = " ‹‹ v[i] ‹‹ endl;

 cout ‹‹ endl;

 v.erase(v.end - 1); // Erase last element.

 for (i = 0; i ‹ v.size; i++) cout ‹‹ "v[" ‹‹ i ‹‹ "] = " ‹‹ v[i] ‹‹ endl;

 cout ‹‹ endl;

 v.erase(v.begin + 1, v.end - 1); // Erase all but first and last.

 for (i = 0; i ‹ v.size; i++)

 cout ‹‹ "v[" ‹‹ i ‹‹ "] = " ‹‹ v[i] ‹‹ endl;

 cout ‹‹ endl;

 v.erase; // Erase all.

 return 0;

}

inrprod2.cpp

#include ‹stl.h›

#include ‹iostream.h›

#include ‹string.h›

int add(int a_, int b_) {

 return a_ + b_;

}

int mult(int a_, int b_) {

 return a_ * b_;

}

int main {

 vector‹int› v1(3);

 vector‹int› v2(v1.size);

 for (int i = 0; i ‹ v1.size; i++) {

v1[i] = i + 1;

v2[i] = v1.size - i;

 }

 ostream_iterator‹int› iter(cout, " ");

 cout ‹‹ "Inner product(product of sums):\n\t";

 copy(v1.begin, v1.end, iter);

 cout ‹‹ "\n\t";

 copy(v2.begin, v2.end, iter);

 int result = inner_product(v1.begin, v1.end, v2.begin, 1, mult, add);

 cout ‹‹ "\nis: " ‹‹ result ‹‹ endl;

 return 0;

}

mmap1.cpp

#include ‹iostream.h›

#include ‹stl.h›

int main {

 typedef multimap‹char, int, less‹char› › mmap;

 mmap m;

 cout ‹‹ "count('X') = " ‹‹ m.count('X') ‹‹ endl;

 m.insert(pair‹const char, int›('X', 10)); // Standard way.

 cout ‹‹ "count('X') = " ‹‹ m.count('X') ‹‹ endl;

 m.insert('X', 20); // Non-standard, but very convenient!

 cout ‹‹ "count('X') = " ‹‹ m.count('X') ‹‹ endl;

 m.insert('Y', 32);

 mmap::iterator i = m.find('X'); // Find first match.

 while (i != m.end) { // Loop until end is reached.

cout ‹‹ (*i).first ‹‹ " -› " ‹‹ (*i).second ‹‹ endl;

i++;

 }

 int count = m.erase('X');

 cout ‹‹ "Erased " ‹‹ count ‹‹ " items" ‹‹ endl;

 return 0;

}

adjfind0.cpp

#include ‹stl.h›

#include ‹iostream.h›

int numbers1[5] = {1, 2, 4, 8, 16};

int numbers2[5] = {5, 3, 2, 1, 1};

int main {

 int* location = adjacent_find(numbers1, numbers1 + 5);

 if (location != numbers1 + 5)

cout ‹‹ "Found adjacent pair of: " ‹‹ *location ‹‹ " at offset " ‹‹ (location - numbers1) ‹‹ endl;

Поделиться с друзьями: