@GoodOrlov

C++ Прояснить что происходит. Как это работает?

Весь код считает сколько символов с строке введены пользователем

#include <iostream>
#include <string>
#include <set> // ----><b> Что это ?</b>

using namespace std;

int main() {
	setlocale(0, ""); // Локализация консоли
	
	string text;
	
	cout << "Наберите текст..." << endl;
	cin >> text;

	set<char> c(text.begin(), text.end());    // ----><b> очень Подробно здесь</b>
	int col = c.size();  // ----> <b>очень Подробно здесь тк "c" даже не переменная(не объявлена)</b>
	cout << "Различных символов в строке: " << col << endl;

	return 0;
}
  • Вопрос задан
  • 444 просмотра
Решения вопроса 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Весь код считает сколько символов с строке введены пользователем

Сколько разных символов.

set<char> c(text.begin(), text.end()); // (std::)set<char> -- это множество (без повторений) символов.
                                       // с -- это имя переменной.
                                       // Конструктор множества с двумя итераторами добавляет во множество
                                       // все объекты между этими итераторами. Т.е. все буквы из строки text.
  int col = c.size();  // про c -- см. выше. std::set::size возвращает размер множества.

Подробнее про std::set.
Ответ написан
Комментировать
Nipheris
@Nipheris Куратор тега C++
У сета вызывается конструктор, принимающий два итератора - откуда и докуда нужно идти. Все элементы от начального до конечного итератора перебираются (а это всё char-ы) и каждый из них помещается во множество. Т.к. множество не добавляет дубликатов элементов, все дубликаты пропускаются. Итого, размер множества и является количеством уникальных букв.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы