【问题标题】:how to not print a chosen element/elements from a vector c++如何不从矢量 c++ 中打印选定的元素/元素
【发布时间】:2018-12-06 05:02:41
【问题描述】:

我需要打印出十几个带有单词和频率的文本文件(“单词”出现了多少次),但这并不意味着打印出只出现一次的单词。我怎么能不把那些话打印出来。我想知道如何基本上能够用我的向量的第二个值的值来做事。

#include <iostream>
#include <map>
#include <fstream>
#include <string>
#include<bits/stdc++.h>
#include <iterator>

using namespace std;

template <class KTy, class Ty>

void PrintMap(map<KTy, Ty> map)
{
    typedef typename  std::map<KTy, Ty>::iterator iterator;

    std::vector<std::pair<std::string,int>> vector( map.begin(), map.end() );

    std::sort( vector.begin(), vector.end(),
               []( const auto & lhs, const auto  rhs )
               { return lhs.second > rhs.second;} );

    for ( const auto & item : vector )
        if (item.second == 1)
            ::cout << item.first << ": " << item.second << std::endl;
}

int main(void)
{
    vector <string> File;
    File.push_back("data.txt");
    File.push_back("data_1.txt");
    File.push_back("data_2.txt");
    File.push_back("data_3.txt");
    File.push_back("data_4.txt");
    File.push_back("data_5.txt");
    File.push_back("data_6.txt");
    File.push_back("data_7.txt");
    File.push_back("data_8.txt");
    File.push_back("data_9.txt");

    map<string, unsigned int> wordsCount;

    for (int i=0; i < File.size(); i++)
    {
        ifstream fileStream(File[i]);

        if (fileStream.is_open())
            while (fileStream.good())
            {
                string word;
                fileStream >> word;

                if (wordsCount.find(word) == wordsCount.end())
                    wordsCount[word] = 1;
                else
                    wordsCount[word]++;
            }
            else
            {
                cerr << "ERROR." << endl;
                return EXIT_FAILURE;
            }
    }
    PrintMap(wordsCount);
    return EXIT_SUCCESS;
}

【问题讨论】:

  • 请重新编辑您的帖子以显示缺少的代码。
  • 这有帮助吗?
  • 如果您不想打印只出现一次的单词,请将if (item.second == 1)更改为if (item.second != 1)
  • 但这怎么会让它不打印???大声笑 nvm 我刚得到它哈哈非常感谢你
  • 无关:请不要使用#include&lt;bits/stdc++.h&gt;using namespace std;。尤其是不在一起

标签: c++ vector printing readfile


【解决方案1】:

如果您不想打印只出现一次的单词,请更改:

if (item.second == 1) 

到:

if (item.second != 1) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    相关资源
    最近更新 更多