如何将对向量中的对的第一个元素(字符串)与另一个字符串进行比较?

理查德

我正在尝试实施我所学到的知识std::vector来解决问题。用户将输入一个动物名称列表(未指定数量),我需要在用户输入中记录动物名称及其出现次数。起初,我尝试使用数组,但由于它是静态的,我转向std::vector. 同样,起初,我尝试使用两个std::vector,一个带有类型int,另一个带有类型string来存储动物名称和出现次数。但是,稍后对两个向量进行排序似乎有点困难,并且在我看来std::vector,带有pair类型的a听起来更好。现在,我被下面的代码困住了,但我不太明白:

#include <bits/stdc++.h>
#include <sstream>

using namespace std;

int position(vector< pair<string, int> > myList, string animalName) {
    int pos;
    for (int i = 0; i < myList.size(); i++) if (animalName.compare(myList[i].first) == 0) pos = i;
    return pos;
}

int main() {
    int Q;
    cin >> Q;

    vector< pair<string, int> > zooPair;
    string animal;

    for (int i = 0; i < Q; i++){
        cin >> animal;
        if (find_if(zooPair.begin(), zooPair.end(), animal.compare(zooPair.first) == 0) == zooPair.end())
            zooPair.emplace_back(animal, 1);
        else
            zooPair[position(zooPair, animal)].second += 1;
    }

    sort(zooPair.begin(), zooPair.end());

    for (vector< pair<string, int> >::iterator it = zooList.begin(); it != zooList.end(); it++)
        cout << *it;

    return 0;
}
克劳斯

您只需将其std::map用作容器类型,因为它已经排序,并且具有带有 operator[] 的易于使用的访问接口。在这里,我们std::map用您的动物和动物园中的动物数量创建一个

例子:

int main() {
    int Q;
    std::cout << "Enter number of entries" << std::endl;
    std::cin >> Q;

    std::map<std::string, int> zoo;

    std::string animal;

    for (int i = 0; i < Q; i++){
        std::cout << "Enter animal" << std::endl;
        std::cin >> animal;
        zoo[animal]++;
    }

    for ( auto& it: zoo )
    {
        std::cout << it.first << " " << it.second << std::endl;
    }


    return 0; 
}

如您所见,无需额外排序,因为映射始终针对每个条目的第一部分(名为“键”)进行排序。

与 相同std::vector请注意,您必须为排序和查找提供运算符!

完整示例:

struct SortableElements: public std::pair< std::string, int >
{
    // forward construction 
    using std::pair<std::string, int>::pair;

    // use for sort: 
    bool operator < (const SortableElements& e2 ) const
    {
        return first < e2.first;
    }

    // use for find: 
    bool operator == ( const std::string& e2 ) const
    {
        return first == e2;
    }
};



int main() 
{   
    std::vector< SortableElements > zoo;

    int Q;
    std::cout << "Enter number of entries" << std::endl;
    std::cin >> Q;

    std::string animal;

    for (int i = 0; i < Q; i++){
        std::cout << "Enter animal" << std::endl;
        std::cin >> animal;

        auto it = std::find( zoo.begin(), zoo.end(), animal);
        if ( it != zoo.end())
        {
            it->second++;
        }
        else
        {
            zoo.emplace_back( animal, 1 );
        }
    }

    // sort:
    std::sort(zoo.begin(), zoo.end());

    for ( auto& it: zoo )
    {
        std::cout << it.first << " " << it.second << std::endl;
    }

    return 0;
}  

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将一个字符串值与另一个字符串值进行比较?

来自分类Dev

如何将一个字符串数组存储到另一个字符串数组中?

来自分类Dev

将字符串与另一个字符串的字符进行比较?

来自分类Dev

查找一个字符串,并在找到第一个字符串后替换另一个字符串

来自分类Dev

编写一个函数,将一个字符串中的第一个匹配项从另一个字符串中删除。

来自分类Dev

将一个字符串与另一个字符串进行比较的最佳方法是什么?

来自分类Dev

将两个字符串中的每个字符串的所有第一个类似的字符放入另一个字符串中

来自分类Dev

将字符串[index]与另一个字符串进行比较

来自分类Dev

Swift:比较字符串的第一个字符

来自分类Dev

比较$ 1与bash中的另一个字符串

来自分类Dev

如何正确比较一个字符串和另一个字符串

来自分类Dev

如何将用户输入分配给一个字符串并与另一个字符串进行比较

来自分类Dev

比较一个字符串与数组中的另一个字符串

来自分类Dev

Jquery 如何从 html 中的 Id 获取字符串并将其与另一个字符串进行比较?

来自分类Dev

当第一个字符串以PHP中的特定字符串开头和结尾时,用另一个字符串替换

来自分类Dev

swift:如何将一个字符串从textField分配给另一个字符串?

来自分类Dev

如何将一个字符串插入另一个字符串?

来自分类Dev

根据第一个字符对字符串进行排序

来自分类Dev

如何计算一个字符串元素在ruby的另一个字符串中出现的次数?

来自分类Dev

从字符串向量获取字符串的第一个字符

来自分类Dev

将$ 1与bash中的另一个字符串进行比较

来自分类Dev

根据字符串中的第一个字符,找到字符串列表中元素的第一个匹配项

来自分类Dev

根据字符串中的第一个字符,找到字符串列表中元素的第一个匹配项

来自分类Dev

带有硒的 Python:如何获取元素中的第一个字符串

来自分类Dev

如何在Lua中的另一个字符串中插入一个字符串?

来自分类Dev

在MySQL中替换字符串中的第一个字符

来自分类Dev

在另一个字符串之后替换字符串的第一个匹配项

来自分类Dev

Ruby:如何计算一个字符串出现在另一个字符串中的次数?

来自分类Dev

如何在jquery中的另一个字符串中间附加一个字符串变量?

Related 相关文章

  1. 1

    如何将一个字符串值与另一个字符串值进行比较?

  2. 2

    如何将一个字符串数组存储到另一个字符串数组中?

  3. 3

    将字符串与另一个字符串的字符进行比较?

  4. 4

    查找一个字符串,并在找到第一个字符串后替换另一个字符串

  5. 5

    编写一个函数,将一个字符串中的第一个匹配项从另一个字符串中删除。

  6. 6

    将一个字符串与另一个字符串进行比较的最佳方法是什么?

  7. 7

    将两个字符串中的每个字符串的所有第一个类似的字符放入另一个字符串中

  8. 8

    将字符串[index]与另一个字符串进行比较

  9. 9

    Swift:比较字符串的第一个字符

  10. 10

    比较$ 1与bash中的另一个字符串

  11. 11

    如何正确比较一个字符串和另一个字符串

  12. 12

    如何将用户输入分配给一个字符串并与另一个字符串进行比较

  13. 13

    比较一个字符串与数组中的另一个字符串

  14. 14

    Jquery 如何从 html 中的 Id 获取字符串并将其与另一个字符串进行比较?

  15. 15

    当第一个字符串以PHP中的特定字符串开头和结尾时,用另一个字符串替换

  16. 16

    swift:如何将一个字符串从textField分配给另一个字符串?

  17. 17

    如何将一个字符串插入另一个字符串?

  18. 18

    根据第一个字符对字符串进行排序

  19. 19

    如何计算一个字符串元素在ruby的另一个字符串中出现的次数?

  20. 20

    从字符串向量获取字符串的第一个字符

  21. 21

    将$ 1与bash中的另一个字符串进行比较

  22. 22

    根据字符串中的第一个字符,找到字符串列表中元素的第一个匹配项

  23. 23

    根据字符串中的第一个字符,找到字符串列表中元素的第一个匹配项

  24. 24

    带有硒的 Python:如何获取元素中的第一个字符串

  25. 25

    如何在Lua中的另一个字符串中插入一个字符串?

  26. 26

    在MySQL中替换字符串中的第一个字符

  27. 27

    在另一个字符串之后替换字符串的第一个匹配项

  28. 28

    Ruby:如何计算一个字符串出现在另一个字符串中的次数?

  29. 29

    如何在jquery中的另一个字符串中间附加一个字符串变量?

热门标签

归档