Помощь - Поиск - Пользователи - Календарь
Полная версия: С++ и работа с Stl
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
w@rlock
помогите исходниками программы, которая создает контейнер, выделяет память для него, в программе дожны быть сравнения со стандартными видами памяти, хорошо бы использование любого алгоритма (например поиска, сортировки). иными словами в программе нужно создать контейнер и с ним "поиграть", чтобы посмотреть всю мощь STL. может кто-нибудь такое уже делал ??
volvo
Какой контейнер тебя интересует? В STL их как минимум 7 штук...

Что значит, сравнение со стандартными видами? То есть, тебе надо сделать нечто (к примеру, список, или дек) вручную, и потом сравнить это с STL-реализацией?
w@rlock
например, вектор или опять таки очередь (допустим из целых чисел) smile.gif как можно сделать какой-нибудь алгоритм с использованием STL ? wink.gif
Например:

// Пример работы с STL библиотекой на основе вектора
#include <iostream>
#include <vector>

using namespace std;

int main () {

vector <int> a;
cout << "\n Модуль тест для работы с библиотекой STL";

cout << "Created vector a, size of vector: " << a.size() << "and capacity of vector: " << a.capacity();
cout << "Please resize vector:";
int N;
cin >> N;
a.resize(N);
cout << "\nOk";
cout << "Now vector a, size of vector: " << a.size() << "and capacity of vector: " << a.capacity();
....
}


Как заполнять векторы и менять его значениями всё понятно. Но кто поможет написать алгоритм какой-нибудь сортировки несколькмих векторов или поиска вектора и, например, замерить время работы алгоритма (при этом желательно выводить различные результаты работы программы на экран как можно больше)? dry.gif blink.gif smile.gif
volvo
Пойдет? (в MinGW отработало без проблем)

#include <stdlib.h>
#include <iostream>
#include <vector>
#include <iterator>

using namespace std;

int main () {

vector <int> a;
ostream_iterator <int> iter (cout, " ");

cout << "\n STL test";

cout << "\nCreated vector a, size of vector: " << a.size() << " and capacity of vector: " << a.capacity();
cout << "\nPlease resize vector:";

int N;
cin >> N;
a.resize(N);
cout << "\nOk";
cout << "Now vector a, size of vector: " << a.size() << "and capacity of vector: " << a.capacity();

for(int i = 0; i < N; ++i)
a[i] = rand() % 100;
clock_t start = clock();
cout << "\nbefore sort:" << endl;
copy (a.begin(), a.end(), iter);

sort (a.begin(), a.end(), greater<int>()); // Сортируем по убыванию

cout << "\nafter sort:" << endl;
copy (a.begin(), a.end(), iter);
clock_t end = clock();
cout << endl;

cout << "\n working time = " << (end - start) << " ticks";
return 0;
}
w@rlock
конечно! smile.gif good.gif
терь осталось понять что такое:

ostream_iterator <int> iter (cout, " "); ?

// понятно, что это начало замера времени, но что значит clock_t ?
clock_t start = clock();


Это я так понимаю вывод, но из какой он библиотеки? Где прототип можно найти?

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


Я, блин, руками вывод писал sad.gif:

for (int i=0; i<a.size(); i++) cout << a[i] << " ";


Тоже самое, где можно прототип найти?

sort (a.begin(), a.end(), greater<int>());


И если можно то как сравнение двух векторов сделать? Или например проверить их перпендикулярность с помощью STL возможно? wink.gif
volvo
Цитата
Это я так понимаю вывод, но из какой он библиотеки? Где прототип можно найти?
Здесь:
SGI :: copy

Цитата
Тоже самое
Ну, сам же сказал, что то же самое:
SGI :: sort

Цитата
как сравнение двух векторов сделать?
С помощью операции equal:
SGI :: equal
w@rlock
Огромное спасибо за ссылку на ресурс good.gif good.gif good.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.