Ищу технику карт

Вот код, над которым я работаю. Он получает количество слов из строки, но теперь я пытался применить ту же логику, используя карты, но не смог этого сделать, поскольку карты не могут принимать значение ключа во время выполнения. Как я могу хранить каждое слово в ключе из строки в разных ключах каждый раз, чтобы я мог получить фактическое количество слов. Любая идея, как я могу это сделать?

 #include<iostream>
 #include<conio.h>
 #include<string>


 using namespace std;

 int main()
{

    map<string, int> stringCounts;
    map<string, int>::iterator iter;
    string words;


    int TOTAL = 0;
    char a[1000];
    cout << "enter the string = ";
    cin.getline(a, 1000);
    int Totalwords = 0;
    int no = 0;

    for (int i = 0; a[i] != '\0'; i++)
    {
        if ((int(a[i]) >= 65 && int(a[i]) <= 90) || (int(a[i]) >= 97 && int(a[i]) <= 122))
        {

        }
        else
        {
            Totalwords++;
        }
        no = i;
    }

    TOTAL = Totalwords;
    cout << "number of words = " << TOTAL << endl;
    string *words = new string[TOTAL];


    for (int i = 0, j = 0; j < TOTAL, i <= no;)
    {
        if ((int(a[i]) >= 65 && int(a[i]) <= 90) || (int(a[i]) >= 97 && int(a[i]) <= 122))
        {
            words[j] = words[j] + a[i];
            stringCounts[words[j]]++;
       for (iter = stringCounts.begin(); iter != stringCounts.end(); iter++)
      {
        cout << "word: " << iter->first << ", count: " << iter->second << 
        endl;
      }
            i++;
        }
        else
        {
            j++;
            i++;
        }
    }

    _getch();
}

что вы имеете в виду под карты не могут принимать ключевое значение во время выполнения? Вы можете добавлять и изменять элементы на карте во время выполнения ...

Leonardo Alves Machado 25.04.2018 19:11

как я могу создать ключевое значение, которое будет хранить каждое слово и учитывать его для каждой итерации? Я имею в виду, например, как ключ будет ключом, который будет создан и будет хранить первое слово предложения, а на следующей итерации будет создан новый ключ, и он будет хранить в нем следующее слово?

zeeshan majeed 25.04.2018 19:16

Думаю, вы не очень хорошо понимали, как работают карты. Проверьте этот учебник, а также этот сайт с документацией

Leonardo Alves Machado 25.04.2018 19:22

@zeeshanmajeed Из вашего объяснения: вы хотите отредактировать ключ или каждый раз, когда вы хотите изменить его значение; это верно?

JeJo 25.04.2018 19:43

да именно @JeJo

zeeshan majeed 26.04.2018 16:03
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
5
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

how can i store each word in a key from a string in a different keys each time so that i can get actual word count .

Это можно сделать следующим образом. Вы даже можете иметь дело с каждым словом данного предложения / строки (при условии, что каждое слово было разделено пробелом).

Несколько замечаний:

  1. Если вы работаете с C++, просто придерживайтесь библиотеки std C++ (здесь в вашем soln использовался #include<conio.h>)
  2. Избегайте практики с using namespace std;
  3. Если вы хотите использовать std::map<>, вы должны включить заголовок <map>

Например, вот пример выходных данных теста: https://www.ideone.com/KGua1M

#include <iostream>
#include <map>
#include <string>
#include <sstream>

 int main()
{
   std::string inputString;
   std::cout << "Enter the string = ";
   std::getline(std::cin, inputString);

   std::map<std::string, int> Map; // word, no. of times
   size_t wordCount = 0;
   size_t letterCount = 0;

   std::stringstream sstr(inputString);
   std::string word;

   while (std::getline(sstr, word, ' '))
   {
       Map[word]++;
       wordCount++;
       letterCount += word.size();
   }

   std::cout << "Total Words: " << wordCount << "\n\n";
   std::cout << "Total letters: " << letterCount << "\n\n";
   std::cout << "Each words count\n\n"  ;

   for(const auto& it: Map)
    std::cout << it.first << " " << it.second << " times\n";
   return 0;
}

как я могу изменить мою собственную программу, чтобы я мог выполнять те же функции? Я попытался сделать что-то вроде того, что создал карту со строковым ключом и значением int во втором операторе if цикла for, чтобы на каждой итерации мое слово сохранялось в строке как ключ, но я не знаю, как я могу сохранить целое число, которое будет вести здесь подсчет слов? в конце я cout карту за пределами 2-го цикла for, который, к счастью, не сработал

zeeshan majeed 26.04.2018 17:41

именно это я и сделал. Вместо синтаксического анализа предложения или строки я использовал stringstream, который разделяет слова и каждый раз сохраняет или подсчитывает слово на карте.

JeJo 26.04.2018 19:34

Другие вопросы по теме