Size: a a a

2021 June 22

VA

Vladislav Averkov in C++ Together 2.0
#include<iostream>
#include<random>
#include<vector>
#include<algorithm>
#include<map>

template<typename T>
void fillRandomDigitalsVector(std::vector<T>& v)
{
   std::random_device rd;

   std::generate(
       v.begin(),
       v.end(),
       [&](){ return (rd() % 9 + 1); }
   );
}

template<typename T>
void purgeElementsVector(std::vector<T>& v)
{
   std::random_device rd;
   int num = rd()%15;

   for(int i = 0; i < num; i += 1)
       v.pop_back();
}

template<typename T1, typename T2>
void fillRandomDigitalsMap(std::map<T1, T2>&map, const std::size_t& n)
{
   std::random_device rd;
   for(int i = 0; i < n; i += 1)
       map[i] = rd() % 9 + 1;
}

template<typename T1, typename T2>
void purgeElementsMap(std::map<T1, T2>&map)
{
   std::random_device rd;
   int num = rd() % 15;
   int s = map.size();

   for(int i = num; i >= 0; i -= 1)
       map.erase(s - i - 1);
}

std::vector<int> toVector(const std::map<int, int>& m)
{
   std::vector<int> res;
   res.reserve(m.size());
   
   for (const auto & p: m)
       res.push_back(p.second);

   return res;
}

std::map<int, int> toMap(const std::vector<int>& v)
{
   std::map<int, int> res;

   for (std::size_t i = 0; i < v.size(); i++)
       res[i] = v[i];
   
   return res;
}

template <typename T1, typename T2>
void removeUnpaired(std::map<T1, T2>& map, std::vector<T2>& vec)
{
   std::vector<T2> result;
   std::vector<T2> mapV = toVector(map);

   std::sort(vec.begin(), vec.end());
   std::sort(mapV.begin(), mapV.end());
   std::set_intersection
   (
       vec.begin(),
       vec.end(),
       mapV.begin(),
       mapV.end(),
       std::back_inserter(result)
   );
   
   map = toMap(result);
   vec = std::move(result);
}

void endl()
{
   std::cout << std::endl;
}

int main(int argc, char** argv)
{
   std::vector<int>vec(15, 0);

   fillRandomDigitalsVector(vec); //Добавляет случайные элементы в вектор
   for(const auto & elem :vec)
       std::cout << elem << ' ';
   endl();
   
   purgeElementsVector(vec); //Удаляет случайное число элементов(не больше 15)
   for(const auto & elem :vec)
       std::cout << elem << ' ';
   endl();

   std::map<int, int>map;

   fillRandomDigitalsMap(map, 15); //Добавляет случайные элементы в map
   for(const auto & elem : map)
       std::cout << elem.second << ' ';
   endl();

   purgeElementsMap(map); //Удаляет случайное число элементов(не больше 15)
   for(const auto & elem : map)
       std::cout << elem.second << ' ';
   endl();

   removeUnpaired(map, vec); //Оставляет уникальные элементы в контейнерах
   for(const auto & elem : map)
       std::cout << elem.second << ' ';
   endl();
   for(const auto & elem :vec)
       std::cout << elem << ' ';
   endl();

   return 0;
}
источник

VA

Vladislav Averkov in C++ Together 2.0
Вот мое тестовое размером в 130 строк
источник

VA

Vladislav Averkov in C++ Together 2.0
зоцените
источник

VA

Vladislav Averkov in C++ Together 2.0
Можно вывод запихнуть в функцию в принципе
источник

O

Ofee in C++ Together 2.0
И правильно, не надо, потому что в нём UB
источник

O

Ofee in C++ Together 2.0
Дней без стрельбы по лапкам: 0
источник

VA

Vladislav Averkov in C++ Together 2.0
что такое UB?)
источник

O

Ofee in C++ Together 2.0
Неопределённое языком поведение
источник

VA

Vladislav Averkov in C++ Together 2.0
андэфинэд что-то
источник

VA

Vladislav Averkov in C++ Together 2.0
#include<iostream>
#include<random>
#include<vector>
#include<algorithm>
#include<map>

template<typename T>
void fillRandomDigitalsVector(std::vector<T>& v)
{
   std::random_device rd;

   std::generate(
       v.begin(),
       v.end(),
       [&](){ return (rd() % 9 + 1); }
   );
}

template<typename T>
void purgeElementsVector(std::vector<T>& v)
{
   std::random_device rd;
   int num = rd() % 15;

   for(int i = 0; i < num; i += 1)
       v.pop_back();
}

template<typename T1, typename T2>
void fillRandomDigitalsMap(std::map<T1, T2>&map, const std::size_t& n)
{
   std::random_device rd;
   for(int i = 0; i < n; i += 1)
       map[i] = rd() % 9 + 1;
}

template<typename T1, typename T2>
void purgeElementsMap(std::map<T1, T2>&map)
{
   std::random_device rd;
   int num = rd() % 15;
   int s = map.size();

   for(int i = num; i >= 0; i -= 1)
       map.erase(s - i - 1);
}

std::vector<int> toVector(const std::map<int, int>& m)
{
   std::vector<int> res;
   res.reserve(m.size());
   
   for (const auto & p: m)
       res.push_back(p.second);

   return res;
}

std::map<int, int> toMap(const std::vector<int>& v)
{
   std::map<int, int> res;

   for (std::size_t i = 0; i < v.size(); i++)
       res[i] = v[i];
   
   return res;
}

template <typename T1, typename T2>
void removeUnpaired(std::map<T1, T2>& map, std::vector<T2>& vec)
{
   std::vector<T2> result;
   std::vector<T2> mapV = toVector(map);

   std::sort(vec.begin(), vec.end());
   std::sort(mapV.begin(), mapV.end());
   std::set_intersection
   (
       vec.begin(),
       vec.end(),
       mapV.begin(),
       mapV.end(),
       std::back_inserter(result)
   );
   
   map = toMap(result);
   vec = std::move(result);
}

void endl()
{
   std::cout << std::endl;
}

void outputVector(const std::vector<int> & vec)
{
   for(const auto & elem :vec)
       std::cout << elem << ' ';
   endl();
}

void outputMap(const std::map<int, int> & map)
{
   for(const auto & elem :map)
       std::cout << elem.second << ' ';
   endl();
}

int main(int argc, char** argv)
{
   std::vector<int>vec(15, 0);

   fillRandomDigitalsVector(vec); //Добавляет случайные элементы в вектор
   outputVector(vec);
   
   purgeElementsVector(vec); //Удаляет случайное число элементов(не больше 15)
   outputVector(vec);

   std::map<int, int>map;

   fillRandomDigitalsMap(map, 15); //Добавляет случайные элементы в map
   outputMap(map);

   purgeElementsMap(map); //Удаляет случайное число элементов(не больше 15)
   outputMap(map);

   removeUnpaired(map, vec); //Оставляет уникальные элементы в контейнерах
   
   outputMap(map);
   outputVector(vec);

   return 0;
}
источник

VA

Vladislav Averkov in C++ Together 2.0
зоцени код стайл
источник
2021 June 23

VA

Vladislav Averkov in C++ Together 2.0
Я не ебу что они имеют ввиду под дубликатами, но пусть это будет правдой. Потому что этот код работает также как и прошлый, которыый предложил рой
источник

VA

Vladislav Averkov in C++ Together 2.0
Боже, все, я иду на кровать
источник

I

Izirayd in C++ Together 2.0
источник

x

xor in C++ Together 2.0
лонгботомский гашишь
источник

RM

Roy Mustang in C++ Together 2.0
А нах ты его заменил то?
источник

RM

Roy Mustang in C++ Together 2.0
Если работает так же
источник

VA

Vladislav Averkov in C++ Together 2.0
ну им тот код не понравился
источник

RM

Roy Mustang in C++ Together 2.0
Значит они dumb
источник

RM

Roy Mustang in C++ Together 2.0
Ты им бенчмарк покажи
источник