• Nie Znaleziono Wyników

Programowanie i struktury danych Programowanie i struktury danych

N/A
N/A
Protected

Academic year: 2021

Share "Programowanie i struktury danych Programowanie i struktury danych"

Copied!
6
0
0

Pełen tekst

(1)

Programowanie i struktury danych Programowanie i struktury danych

Wykład 9 Wykład 9

Dr Piotr Cybula <piotr.cybula@wmii.uni.lodz.pl>

Dr Piotr Cybula <piotr.cybula@wmii.uni.lodz.pl>

(2)

Standard Template Library (STL) Standard Template Library (STL)

Standardowa Biblioteka Szablonów języka C++

strumienie wejścia/wyjścia: iostream, fstream, sstream, iomanip

łańcuchy: string

wyjątki standardowe: stdexcept

kontenery:

kontenery sekwencyjne: vector, deque, list

adaptery kontenerów: stack, queue, priority_queue

kontenery asocjacyjne: set, map

iteratory: iterator

operacje numeryczne: complex, numeric, limit

uogólnione algorytmy: algorithm, functional

(3)

istream, ostream istream, ostream

#include <iostream>

strumienie standardowego wejścia/wyjścia (cin jest obiektem klasy istream, cout jest obiektem klasy ostream)

przeciążone operatory (operator>> dla istream, operator<< dla ostream)

double n;

char str[80];

cout << "Give a number: ";

cin >> n;

cout << "Given number: " << n << endl;

cout << "Give a text: ";

cin >> str; //only one word (until space)

cin.ignore(); //ignore one character (end of line) cin.getline(str, 80); //whole sentence (until end of line) cout << cin.gcount(); //the number of characters read

cout << "Given text: " << str << endl;

(4)

ifstream, ofstream ifstream, ofstream

#include <fstream>

ifstream używamy tak jak istream (odczyt z pliku)

ofstream używamy tak jak ostream (zapis do pliku)

char c;

ifstream in("filepath\\filename"); //file opening

if (!in) throw runtime_error("File not found"); //operator!

while (!in.eof()) //end of file check { in >> c; cout << c;

}in.close();

ofstream out;

out.open("filepath\\filename"); //opening after construction out << "text " << 7 << endl;

out.close();

(5)

string string

#include <string>

ciąg znaków (łańcuch znakowy)

przeciążone operatory: + (łączenie, konkatenacja), [] (wyodrębnianie znaków),

= (przypisanie), <, > (porównanie), >>, << (strumieniowe wejście/wyjście)

string str1 = "Hello", str2 = "world", str;

str = str1 + " " + str2;

for (size_t i = 0; i < str.size(); i++) { cout << str[i];

}cout << str.substr(0, 5); //from first character, 5 characters cout << str.find("world"); //first position of the pattern str.clear();

if (str.empty()) {

cout << "Give a text: ";

cin >> str; //only one word (until space)

getline(cin, str); //whole sentence (until end of line) cout << str << endl;

(6)

istringstream, ostringstream istringstream, ostringstream

#include <sstream>

istringstream używamy tak jak istream (odczyt z łańcucha)

ostringstream używamy tak jak ostream (zapis do łańcucha)

string str = "1 2 3 4 5";

int a, b;

istringstream in(str); //input stream with str copy in >> a >> b;

cout << a << b << endl;

ostringstream out; //output stream with empty string out << "text " << a;

cout << out.str() << endl; //access to the internal string

Cytaty

Powiązane dokumenty

Powiemy, że algorytm Alg działający w strukturze danych S jest całkowicie poprawny ze względu na specyfikację &lt;wp,wk&gt; wttw dla wszystkich danych w strukturze S

Problem Dany jest ciąg rosnący e[1],..,e[n] oraz element x pewnej przestrzeni liniowo uporządkowanej &lt;E, &gt;. Następnie porównujemy x z kolejnymi elementami ciągu

(3) Jeżeli tak otrzymane drzewo nie jest częściowo uporządkowane, to przechodząc wzdłuż drogi od liścia x do korzenia, poprawić etykiety zamieniając etykietę ojca z

(2) za pomocą pary pomocniczych wskaźników pred i succ wybieramy węzeł do przeniesienia i przenosimy go do listy tymczasowej za pomocą wskaźnika mover (aktulizując wskaźniki head

● szablony pozwalają na wielokrotne wykorzystanie istniejącego kodu źródłowego struktury danych dla wielu wersji tej struktury z tym samym interfejsem, ale różnymi typami

(3) przestawiamy wskaźnik next w węźle wskazywanym przez pred (lub wskaźnik head gdy pred jest pusty) oraz wskaźnik prev w węźle wskazywanym przez succ (lub wskaźnik tail gdy

Każda linia w tych plikach zawiera dane pojedynczego studenta rozdzielone pojedynczymi spacjami w następującej kolejności: nazwisko, imię (imiona), numer indeksu

• w przypadku gdy dane osoby są poprawne, a niepoprawny jest jej numer PESEL (czyli nieprawidłowość wystąpiła w pliku pesele.txt), osoba ta nie jest wpisywana do