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

ЖАНРЫ

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

Менг Ли

Шрифт:

 v.push_back(1);

 v.push_back(2);

 v.push_back(3);

 // Position immediately after last item.

 vector‹int›::iterator i = v.end;

 // Move back one and then access.

cout ‹‹ "last element is " ‹‹ *--i ‹‹ endl;

 i -= 2; // Jump back two items.

 cout ‹‹ "first element is " ‹‹ *i ‹‹ endl;

 return 0;

}

setdiff0.cpp

#include ‹stl.h›

#include ‹iostream.h›

int v1[3] = {13, 18, 23};

int v2[4] = {10, 13, 17, 23};

int result[4] = {0, 0, 0, 0};

int main {

 set_difference(v1, v1 + 3, v2, v2 + 4, result);

 for (int i = 0; i ‹ 4; i++) cout ‹‹ result[i] ‹‹ ' ';

 cout ‹‹ endl;

 set_difference(v2, v2 + 4, v1, v1 + 2, result);

 for (i = 0; i ‹ 4; i++) cout ‹‹ result[i] ‹‹ ' ';

 cout ‹‹ endl;

return 0;

}

lexcmp2.cpp

#include ‹stl.h›

#include ‹iostream.h›

const unsigned size = 6;

char n1[size] = "shoe";

char n2[size] = "shine";

int main {

 bool before = lexicographical_compare(n1, n1 + size, n2, n2 + size, greater‹char›);

 if (before) cout ‹‹ n1 ‹‹ " is after " ‹‹ n2 ‹‹ endl;

 else cout ‹‹ n2 ‹‹ " is after " ‹‹ n1 ‹‹ endl;

 return 0;

}

adjdiff1.cpp

#include ‹stl.h›

#include ‹iostream.h›

int main {

 vector‹int› v(10);

 for (int i = 0; i ‹ v.size; i++) v[i] = i * i;

 vector‹int› result(v.size);

 adjacent_difference(v.begin, v.end, result.begin);

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

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

 cout ‹‹ endl;

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

 cout ‹‹ endl;

 return 0;

}

stblptn1.cpp

#include ‹stl.h›

#include ‹stdlib.h›

#include ‹iostream.h›

int main {

 vector‹int› v1(10);

 for (int i = 0; i ‹ v1.size; i++) v1[i] = rand % 20;

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

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

 cout ‹‹ endl;

 stable_partition(v1.begin, v1.end, bind2nd(less‹int›, 11));

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

 cout ‹‹ endl;

 return 0;

}

ptition1.cpp

#include ‹stl.h›

#include ‹stdlib.h›

#include ‹iostream.h›

int main {

 vector‹int› v1(10);

 for (int i = 0; i ‹ v1.size; i++) v1[i] = rand % 20;

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

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

 cout ‹‹ endl;

 partition(v1.begin, v1.end, bind2nd(less‹int›, 11));

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

 cout ‹‹ endl;

 return 0;

}

vec1.cpp

#include ‹iostream.h›

#include ‹stl.h›

int main {

 vector‹int› v1; // Empty vector of integers.

 cout ‹‹ "empty = " ‹‹ v1.empty ‹‹ endl;

 cout ‹‹ "size = " ‹‹ v1.size ‹‹ endl;

 cout ‹‹ "max_size = " ‹‹ v1.max_size ‹‹ endl;

 v1.push_back(42); // Add an integer to the vector.

 cout ‹‹ "size = " ‹‹ v1.size ‹‹ endl;

 cout ‹‹ "v1[0] = " ‹‹ v1[0] ‹‹ endl;

 return 0;

}

sort2.cpp

#include ‹stl.h›

#include ‹iostream.h›

int array[] = {1, 50, -10, 11, 42, 19};

int main {

 int count = sizeof(array) / sizeof(array[0]);

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

 cout ‹‹ "before: ";

 copy(array, array + count, iter);

 cout ‹‹ "\nafter: ";

 sort(array, array + count, greater‹int›);

 copy(array, array + count, iter);

 cout ‹‹ endl;

 return 0;

}

copy4.cpp

#include ‹stl.h›

#include ‹iostream.h›

int main {

 typedef vector‹int› IVec;

 vector‹int› v1(10);

 for (int loc = 0; loc ‹ v1.size; loc++) v1[loc] = loc;

 vector‹int› v2;

 insert_iterator‹IVec› i (v2, v2.begin);

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