Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //ы
- #include <iostream>
- #include <vector>
- using namespace std;
- // Тестирование - удаление дубликатов из вектора
- void main()
- {
- unsigned eInd, sz, sZe, n, k, j;
- bool oneOrMore_del;
- vector<unsigned> dubIn;
- vector<const char*>::iterator itCh;
- vector<const char*> vPath(9);
- for(n=0; n < 9; n++)
- {
- if(n < 2) vPath[n] = "n78";
- else if(n==2 || n==3 || n==5)
- vPath[n] = "zz33";
- else if(n > 6)
- vPath[n] = "r56";
- else
- vPath[n] = "d22";
- }
- sz = vPath.size();
- // вывод всех ячеек вектора
- for(n=0; n < sz; n++)
- {
- cout << vPath[n] << endl;
- }
- cout << endl;
- // проверка на Дубликаты и Корректировка
- for( oneOrMore_del = false, eInd = sz-1, n=0; n < eInd; n++ )
- {
- for(k = n + 1; k < sz; k++)
- {
- if( vPath[n] == vPath[k] )
- {
- // заносим Индекс в вектор дубликатов
- dubIn.push_back(k);
- }
- }
- // сверяемся есть ли дубликаты
- sZe = dubIn.size();
- if(sZe)
- {
- for(j=0; j < sZe; j++)
- {
- // с каждым удалением Реальные индексы будут смещаться
- // минусуем позицию счетчиком цикла
- itCh = vPath.begin() + dubIn[j] - j;
- vPath.erase(itCh);
- }
- oneOrMore_del = true;
- eInd -= sZe;
- sz -= sZe;
- // очищаем век. дубл.
- dubIn.clear();
- dubIn.shrink_to_fit();
- }
- }
- // освобождаем память если необходимо
- if(oneOrMore_del) vPath.shrink_to_fit();
- // Информация о размере и занимаемой памяти
- cout << sz << endl;
- cout << vPath.size() << endl;
- cout << vPath.capacity() << endl;
- // вывод всех ячеек вектора после Корректировки
- for(n=0; n < sz; n++)
- {
- cout << vPath[n] << endl;
- }
- /////////
- // Спасибо за Внимание !!! )))
- ////
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement