#include <vector>
#include <map>
#include <list>
#include <cstdlib>
#include <ctime>
#include <iostream>
bool isPresent(std::vector<int> vec, int val, int indice){
for(unsigned int i = indice ; i< vec.size();++i){
if(vec[i]==val)
return true;
}
return false;
}
std::vector<int> removeDoublons(const std::vector<int>& vec){
std::vector<int> vecSansDoublons;
for(unsigned int i = 0 ; i< vec.size() ; ++i){
if(!isPresent(vec, vec[i], i+1)){
vecSansDoublons.push_back(vec[i]);
}
}
return vecSansDoublons;
}
void directDoublonsremoval(std::vector<int>& vec){
for(unsigned int i = 0 ; i< vec.size() ; ++i){
int valI = vec[i];
for(unsigned int j = i+1 ; j< vec.size() ; ++j){
if(vec[j]==valI){
vec.erase(vec.begin()+j);
}
}
}
}
int main(){
srand(time(NULL));
std::vector<int> vec(20,0);
for(unsigned int i=0; i<vec.size();i++){
vec[i] = rand()%10;
}
std::cout << "vecteur avec doublons=";
for(auto val : vec)
std::cout << val << " ";
std::cout << std::endl;
// std::cout << "vecteur sans doublon=";
// std::vector<int> vecSansDoublons = removeDoublons(vec);
// for(auto val : vecSansDoublons)
// std::cout << val << " ";
// std::cout << std::endl;
std::cout << "vecteur sans doublon=";
directDoublonsremoval(vec);
for(auto val : vec)
std::cout << val << " ";
std::cout << std::endl;
return 0;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPGxpc3Q+CiNpbmNsdWRlIDxjc3RkbGliPgojaW5jbHVkZSA8Y3RpbWU+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCgpib29sIGlzUHJlc2VudChzdGQ6OnZlY3RvcjxpbnQ+IHZlYywgaW50IHZhbCwgaW50IGluZGljZSl7CiAgICBmb3IodW5zaWduZWQgaW50IGkgPSBpbmRpY2UgOyBpPCB2ZWMuc2l6ZSgpOysraSl7CiAgICAgICAgaWYodmVjW2ldPT12YWwpCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgcmV0dXJuIGZhbHNlOwp9CgpzdGQ6OnZlY3RvcjxpbnQ+IHJlbW92ZURvdWJsb25zKGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIHZlYyl7CiAgICBzdGQ6OnZlY3RvcjxpbnQ+IHZlY1NhbnNEb3VibG9uczsKCiAgICBmb3IodW5zaWduZWQgaW50IGkgPSAwIDsgaTwgdmVjLnNpemUoKSA7ICsraSl7CiAgICAgICAgaWYoIWlzUHJlc2VudCh2ZWMsIHZlY1tpXSwgaSsxKSl7CiAgICAgICAgICAgIHZlY1NhbnNEb3VibG9ucy5wdXNoX2JhY2sodmVjW2ldKTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gdmVjU2Fuc0RvdWJsb25zOwp9CgoKdm9pZCBkaXJlY3REb3VibG9uc3JlbW92YWwoc3RkOjp2ZWN0b3I8aW50PiYgdmVjKXsKCiAgICBmb3IodW5zaWduZWQgaW50IGkgPSAwIDsgaTwgdmVjLnNpemUoKSA7ICsraSl7CiAgICAgICAgaW50IHZhbEkgPSB2ZWNbaV07CiAgICAgICAgZm9yKHVuc2lnbmVkIGludCBqID0gaSsxIDsgajwgdmVjLnNpemUoKSA7ICsrail7CiAgICAgICAgICAgIGlmKHZlY1tqXT09dmFsSSl7CiAgICAgICAgICAgICAgICB2ZWMuZXJhc2UodmVjLmJlZ2luKCkraik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCgoKCgoKaW50IG1haW4oKXsKICAgIHNyYW5kKHRpbWUoTlVMTCkpOwogICAgc3RkOjp2ZWN0b3I8aW50PiB2ZWMoMjAsMCk7CiAgICBmb3IodW5zaWduZWQgaW50IGk9MDsgaTx2ZWMuc2l6ZSgpO2krKyl7CiAgICAgICAgdmVjW2ldID0gcmFuZCgpJTEwOyAKICAgIH0KCiAgICBzdGQ6OmNvdXQgPDwgInZlY3RldXIgYXZlYyBkb3VibG9ucz0iOwogICAgZm9yKGF1dG8gdmFsIDogdmVjKQogICAgICAgIHN0ZDo6Y291dCA8PCB2YWwgPDwgIiAiOwogICAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKCgogICAgLy8gc3RkOjpjb3V0IDw8ICJ2ZWN0ZXVyIHNhbnMgZG91Ymxvbj0iOwogICAgLy8gc3RkOjp2ZWN0b3I8aW50PiB2ZWNTYW5zRG91YmxvbnMgPSByZW1vdmVEb3VibG9ucyh2ZWMpOwogICAgLy8gZm9yKGF1dG8gdmFsIDogdmVjU2Fuc0RvdWJsb25zKQogICAgLy8gICAgIHN0ZDo6Y291dCA8PCB2YWwgPDwgIiAiOwogICAgLy8gc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKCgogICAgc3RkOjpjb3V0IDw8ICJ2ZWN0ZXVyIHNhbnMgZG91Ymxvbj0iOwogICAgZGlyZWN0RG91YmxvbnNyZW1vdmFsKHZlYyk7CiAgICBmb3IoYXV0byB2YWwgOiB2ZWMpCiAgICAgICAgc3RkOjpjb3V0IDw8IHZhbCA8PCAiICI7CiAgICBzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwoKCiAgICByZXR1cm4gMDsKfQ==