Spis treści

Kolekcje i algorytmy

STL - Standard Template Library

Przykład: vector i losowanie lotto

#include <cstdlib>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
 
int main()
{
   vector<int> w;
   vector<int>::iterator it;
 
   for(int i=1;i<=49;i++) w.push_back(i); 
 
   cout << "Zawartosc wektora\n";
   for(it=w.begin();it!=w.end();it++) cout << *it << " ";
   cout << endl;
 
   cout << "Size=" << w.size() << " Capacity=" << w.capacity() << endl;
 
   srand(time(NULL));
 
   cout << "Random shuffle (numery lotto)\n";
 
   random_shuffle(w.begin(),w.end());
   for(it=w.begin();it!=w.begin()+6;it++) cout << *it << " ";
   cout << endl;
}

Ćwiczenia

Klasa Wyraz

Zaimplementuj klasę Wyraz służącą do obsługi łańcuchów znaków składających się wyłącznie z liter.
Klasa Wyraz:

Przykład działania:

std::stringstream ss;      // z biblioteki <sstream>
 
ss << "!@&#&*(Ala_ma++kota" << endl;
 
Wyraz w;
while(!ss.eof())
{
   ss >> w;
   cout << w << endl;
}

Wynik działania:

Ala
ma
kota

Przydatne funkcje:

Słownik (kolekcja Map)

Wykorzystaj kolekcję Map oraz klasę Wyraz do stworzenia słownika zgodnie z treścią zadania z pierwszych zajęć.

Algorytmy STL - dodatkowe ćwiczenia

Algorytmy STL

Przetestuj działanie algorytmów sort(), reverse(), fill(), rotate(), replace(), random_shuffle, min_element() na kolekcji vector.

  1. utwórz wektor i wypełnij go liczbami całkowitymi od 1 do 100
  2. wymieszaj zawartość całego wektora za pomocą algorytmu random_shuffle i wyświetl rezultat
  3. posortuj elementy wektora i wyświetl rezultat
  4. odwróć kolejność pierwszej połowy elementów wektora
  5. wypełnij 20 ostatnich wartości zawartych w wektorze wartością -1 za pomocą algorytmu fill
  6. przesuń cyklicznie wszystkie elementy wektora o jedną pozycję w tył tak aby drugi element był pierwszym, trzeci drugim itd.
  7. znajdź najmniejszy element
  8. znajdź liczbę wszystkich liczb parzystych w wektorze za pomocą algorytmu count_if. Warunek do sprawdzenia przekaż jako wskaźnik do odpowiedniej funkcji.
  9. zamień wszystkie elementy wektora mniejsze od 50 na wartość 0 za pomocą algorytmu replace_if. Warunek do sprawdzania przekaż za pomoca obiektu funkcyjnego (obiektu przeciążającego operator()).