@ugrumovi

Как удалить повторяющиеся слова в строках используя lines?

Задача состоит в том, чтобы считать строки из файла, отсортировать их по алфавиту и удалить дубли, отсортировать у меня получилось, а вот удалить повторы не понимаю как.
void task3() {
    ifstream slovar;
    slovar.open("slovar.txt");
    ofstream out;
    out.open("output.txt");

    list<string> lines;
    while (!slovar.eof())
    {
        string s1;
        getline(slovar, s1, '\n');
        lines.push_back(s1);

    }
    lines.sort();
    //lines.erase(unique(lines.begin(), lines.end()), lines.end());
    copy(lines.begin(), lines.end(), ostream_iterator<string>(out, "\n"));
    slovar.close();
    out.close();
}
  • Вопрос задан
  • 65 просмотров
Решения вопроса 2
myjcom
@myjcom Куратор тега C++
//lines.erase(unique(lines.begin(), lines.end()), lines.end());

^^^
Не тот unique использовать пытался.
У std::list он свой

auto in = ifstream("in.txt");
auto out = ofstream("out.txt");
list<string> ls;
copy(istream_iterator<string>(in), {}, back_inserter(ls));
ls.sort();
ls.unique();
copy(ls.begin(), ls.end(), ostream_iterator<string>(out, "\n"));
Ответ написан
YuriyVorobyov1333
@YuriyVorobyov1333
Software Developer (Node.js/Angular)
Попробуйте это:
#include <iostream>
#include <fstream>
#include <string>
#include <set>
#include <vector>
#include <algorithm>

using namespace std;

void task3() {
  ifstream slovar;
  slovar.open("slovar.txt");
  ofstream out;
  out.open("output.txt");

  vector<string> lines;

  while (!slovar.eof())
  {
      string s1;
      getline(slovar, s1, '\n');
      lines.push_back(s1);
  }
  
  sort(begin(lines), end(lines));
  set<string> linesSet(begin(lines), end(lines));

  for (auto& str : linesSet) {
    out << str << endl;
  }

  slovar.close();
  out.close();
}


входные данные/результат

Входные данные:
basds
sdsdsds
sdsdsdssdsds
asdasdsad
basds
basds
sdsdsdssdsds

Результат:
asdasdsad
basds
sdsdsds
sdsdsdssdsds

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы