Решен: вектор уникален в

Последна актуализация: 09/11/2023
Автор: C SourceTrail

Като програмист на C++, аз съм развълнуван да говоря за една от уникалните характеристики на езика – векторния контейнер, по-специално за полезността и използването на „уникалната“ функция във вектор. Този мощен компонент на C++ Standard Template Library (STL) рационализира организацията на данните и опростява нашите усилия за кодиране. Доброто използване на векторната уникална функция може експоненциално да увеличи ефективността на вашата програма.

Функцията „unique“ основно елиминира последователни дубликати в даден диапазон, дефиниран от контейнер като вектор, и връща итератор, сочещ към следващия от крайния ляв отделен елемент.
Разбирането на векторите в C++ и „уникалната“ функция е от съществено значение за всеки, който иска да стане опитен в този език за програмиране.

#include
#include
#include

int main ()
{
std::vector vec = {10, 20, 20, 30, 30, 30, 20, 20, 10};

std::sort(vec.begin(), vec.end());

std::vector::итератор ip;

ip = std::unique(vec.begin(), vec.end());

vec.resize(std::distance(vec.begin(), ip));

за (ip = vec.begin(); ip != vec.end(); ip++) {
std::cout << *ip << " "; } върне 0; } [/код]

Обяснение на C++ кода:

Кодът първо включва необходимите заглавки – iostream за входно/изходни операции, вектор за използване на векторната структура от данни и алгоритъм за достъп до „уникалната“ функция. След това декларира вектор 'vec' от цели числа и го инициализира със случайни числа.

Функцията 'sort' подрежда елементите във възходящ ред. Сортирането е важно, защото функцията „unique“ премахва само последователни дубликати. Ако дубликатите не са един до друг, те няма да бъдат премахнати.

След това се използва функцията „unique“, като диапазонът е началото и краят на „vec“. 'Unique' връща итератор, който сочи към края на диапазона без дубликати.

Роля на вектора и „уникален“ метод:

Резултатът от горния код ще бъде „10 20 30“. Както можем да забележим, всички дублирани стойности се премахват и остават само уникални стойности. Тук трябва да се отбележи, че функцията „unique“ не изтрива дублиращите се елементи, тя връща итератор до следващия от последните уникални елементи, а не след това, и стойността остава недефинирана.

Редът „vec.resize(std::distance(vec.begin(), ip))“ е за премахване на недефинираните елементи и преоразмеряване на вектора според уникалните стойности. Нашият окончателен вектор вече няма дубликати. Цикълът 'for' отпечатва крайния вектор.

Използване на библиотеки и функции:

Използването на STL библиотеки, като вектор и алгоритъм, не само спестява време при кодиране, но също така предоставя ефективни и лесни за разбиране решения за сложни задачи. „Уникалната“ функция във векторите е отличен пример. Той запазва оригиналния ред, премахва последователни дубликати и ни улеснява да управляваме данните. Това е много удобно, особено когато се работи с големи набори от данни.

Следователно, разбирането и доброто използване на тези предварително дефинирани библиотеки и функции е основно умение за всеки C++ програмист.

Подобни публикации: