Kao C++ programer, uzbuđen sam što mogu govoriti o jednoj od jedinstvenih karakteristika jezika – vektorskom kontejneru, konkretno o korisnosti i upotrebi 'jedinstvene' funkcije u vektoru. Ova moćna komponenta C++ Standard Template Library (STL) pojednostavljuje organizaciju podataka i pojednostavljuje naše napore kodiranja. Dobra upotreba vektorske jedinstvene funkcije može eksponencijalno povećati efikasnost vašeg programa.
Funkcija 'jedinstvena' prvenstveno eliminiše uzastopne duplikate u datom opsegu definisanom kontejnerom poput vektora, i vraća iterator koji pokazuje na sledeći od konačnog različitog elementa levo.
Razumijevanje vektora u C++-u i 'jedinstvene' funkcije je od suštinskog značaja za svakoga ko želi postati vješti u ovom programskom jeziku.
#include
#include
#include
int main ()
{
std::vector
std::sort(vec.begin(), vec.end());
std::vector
ip = std::unique(vec.begin(), vec.end());
vec.resize(std::distance(vec.begin(), ip));
for (ip = vec.begin(); ip != vec.end(); ip++) {
std::cout << *ip << " "; } return 0; } [/code]
Objašnjenje C++ koda:
Kod prvo uključuje neophodna zaglavlja – iostream za ulazno/izlazne operacije, vektor za korištenje vektorske strukture podataka i algoritam za pristup 'jedinstvenoj' funkciji. Zatim deklarira vektor 'vec' cijelih brojeva i inicijalizira ga slučajnim brojevima.
Funkcija 'sort' raspoređuje elemente u rastućem redoslijedu. Sortiranje je važno jer 'jedinstvena' funkcija uklanja samo uzastopne duplikate. Ako duplikati nisu jedan pored drugog, neće biti uklonjeni.
Tada se koristi 'jedinstvena' funkcija, s rasponom koji je početak i kraj 'vec'. 'Unique' vraća iterator koji pokazuje na kraj opsega bez duplikata.
Uloga vektora i 'jedinstvene' metode:
Izlaz gornjeg koda će biti “10 20 30”. Kao što možemo primijetiti, sve duplicirane vrijednosti se uklanjaju, a ostaju samo jedinstvene vrijednosti. Ovdje treba napomenuti da funkcija 'unique' ne briše duplirane elemente, ona vraća iterator sljedećem od posljednjih jedinstvenih elemenata, a ne dalje od toga, a vrijednost ostaje nedefinirana.
Linija 'vec.resize(std::distance(vec.begin(), ip))' služi za uklanjanje nedefiniranih elemenata i promjenu veličine vektora prema jedinstvenim vrijednostima. Naš konačni vektor sada nema duplikata. Petlja 'for' ispisuje konačni vektor.
Korištenje biblioteka i funkcija:
Korištenje STL biblioteka, kao što su vektor i algoritam, ne samo da štedi vrijeme u kodiranju, već također pruža efikasna i lako razumljiva rješenja za složene zadatke. 'Jedinstvena' funkcija u vektorima je odličan primjer. Zadržava originalni redoslijed, uklanja uzastopne duplikate i olakšava nam upravljanje podacima. Ovo je vrlo korisno, posebno kada se radi o velikim skupovima podataka.
Stoga je razumijevanje i dobro korištenje ovih unaprijed definiranih biblioteka i funkcija neophodna vještina za svakog C++ programera..