/ / как да изтриете дублирания в масив c ++ - c ++, масиви, дублиране - премахване

как да изтриете дубликат в масив c ++ - c ++, масиви, дубликат - премахване

Трябва да изтрия дублиращи се елементи в масив.
Това е моят код:

struct client{
int index;
string name;
string surname;
string city;
int year;
float sell;};

client * elimina(client array[], int &n){
int j=0;
int i;
int a=0;
int trovato=0;
client *vet;
for(i=0; i<n; i++){
vet=new client[a+1];
for(j=0;j<a;j++){
if(array[i].index==vet[j].index){
trovato=1;

break;}}

if(trovato==0){
vet[a]=array[i];
a++;}
trovato=0;}
n=a;
return vet;
}

кодът работи, но изходът на екрана е

    11-12181452000000000000000000000000000000010334500

Отговори:

0 за отговор № 1

Не мисля, че това е много ефективно масив, тогава дубликатите ще бъдат съседни и много по-бързо, за да ги премахнете.

Използвайте съответните стандартни структури и функции на C ++. Първо, вие определяте сортиране критерий за вашите клиенти:

bool operator<(client const& c1, client const& c2)
{ return c1.index < c2.index; }

След това функцията ви става много по-проста:

std::vector<client> elimina(std::vector<client> v) {
// Sort on index so that std::unique can find all duplicates
std::sort(v.begin(), v.end());
// Shift duplicates
auto const last = std::unique(v.begin(), v.end());
// Resize the vector so duplicates drop out
v.resize(last - v.begin());
return v;
}

Трябва да включите заглавията "вектор" и "алгоритъм".

Обърнете внимание на използването на авто, което работи само за версията C ++ (C ++ 11). В по-ранните версии би било std :: vector :: iterator.

Вижте стандартната справка в http://en.cppreference.com/w/cpp/algorithm/unique за детайли.