У меня есть этот векторПолучение подсчета строк в векторе C++
vector <string> data
data = ["this is", "data that", "is in", "this is", "vector", "vector", "vector"]
как я получаю вектор (или 2D массив), который удаляет дубликаты и вместо этого имеет счетчики для каждой записи-го?
т.е.
results = [("this is", 2), ("data that", 1), ("is in", 1), ("vector", 3)]
Xeo, я пробовал много подходов. то есть для каждой строки s в данных, посмотрите остальные элементы в данных и количество инкрементов для каждого совпадения s. похоже, что это O (n^2), но я ищу что-то более эффективное – CyberShot
Возможно, вы захотите попробовать 'std :: map' ... вы можете индексировать по строке и увеличивать счетчик как необходимо. 'map' сортируются по ключу (здесь строка) и не могут иметь дубликатов. Чтобы взять несортированный список/вектор строк и заполнить карту, это операция O (N x log2N). –
Это звучит как столкновение (хэш) таблицы для меня. Попробуй это посмотреть. –