Usuwanie powtarzających się elementów

Usuwanie powtarzających się elementów
ulxoriffh Sdfv
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 2 lata
  • Postów:18
0

Próbowałem zrobić program usuwający powtarzające się elementy w nieuporządkowanej tablicy. Jednak mój program nie działa.

#include <vector>
#include <iostream>
#include<algorithm>
using namespace std;
#define SIZE 4

int main()
{
vector<int>tab;
for (int i = 0; i < SIZE; i++)
{
int x;
cin>> x;
tab.push_back(x);
}

for(int i=0;i<tab.size();i++)
	for (int j = 0; j <tab.size(); j++)
	{
		if (tab[j] == tab[j + 1])
		{
			tab.erase(tab.begin() + j)
		}
			
	
	}
for (int z = 0; z < tab.size(); z++)
{
	cout << tab[z];
}

}

lion137
Jakiś lepszy format?
BG
  • Rejestracja:prawie 6 lat
  • Ostatnio:5 dni
  • Postów:289
0
Kopiuj
for (int j = i+1; j <tab.size(); j++) ...
Kopiuj
if (tab[i] == tab[j]) ...
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:9 minut
  • Postów:4923
0

Jak ma je usunąć?
[1, 1, 2, 2, 5] -> [1, 2, 5]
[1, 1, 2, 2, 5] -> [5]
?


BG
Pytanie co autor (pytania/zadania) miał na myśli...
ulxoriffh Sdfv
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 2 lata
  • Postów:18
0

[1,2,5]

enedil
  • Rejestracja:prawie 12 lat
  • Ostatnio:16 dni
  • Postów:1027
0

Oh well, a co robi ten program, że nie działa?

lion137
  • Rejestracja:około 8 lat
  • Ostatnio:9 minut
  • Postów:4923
0

enedil
Ja bym się jeszcze zastanowił, jakie jest pożądane zachowanie przy wejściu [1, 2, 2, 1]. Wnioskując po rozwiązaniu, byłoby to [1, 2, 1], czyli coś zgoła innego, niż w Twoim linku.
enedil
Hmm? No właśnie, u Ciebie jest inaczej niż [1, 2, 1], a sądzę że to jest oczekiwane rozwiązanie.
lion137
Rzeczywiście, sam jestem ciekaw, chociaż [1, 2, 2, 1] -> [1, 2, 1] pozostawia duplikat.
enedil
Moim zdaniem chodzi z grubsza o replikację uniksowego narzędzia uniq, które usuwa duplikaty, jeśli są obok siebie.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.