C++关联容器(unordered_map,vector,unordered_set)

说明书:
http://classfoo.com/ccby/article/qNNOJ#sec_4Gxme0

unordered_set:(无序集合)

//500
class Solution {
public:
    vector<string> findWords(vector<string>& words) {
        vector<string> res;//来一个string类的动态数组
        unordered_set<char> row1{'q','w','e','r','t','y','u','i','o','p'};//存储键盘上第一行的字母
        unordered_set<char> row2{'a','s','d','f','g','h','j','k','l'};//存储键盘上第二行的字母
        unordered_set<char> row3{'z','x','c','v','b','n','m'};//存储键盘上第三行的字母
        for (string word : words) //for循环数组words,words的元素就是一个单词
        {
            int one = 0, two = 0, three = 0;//初始化计数器
            for (char c : word) {//for循环数组word(一个单词),word的元素即是字符
                if (c < 'a') c += 32;
                if (row1.count(c)) one = 1;//count函数返回的是符合的元素的个数,如果没有,则返回0,即false,大于0则为true
                if (row2.count(c)) two = 1;
                if (row3.count(c)) three = 1;
                if (one + two + three > 1) break;//即这个单词只用一行是无法输入完的
            }
            if (one + two + three == 1) res.push_back(word);
        }
        return res;
    }
};

**成员函数:
find 通过给定主键查找元素
count 返回匹配给定主键的元素的个数//见上例子
equal_range 返回值匹配给定搜索值的元素组成的范围**

vector(顺序容器)

//详解:http://blog.csdn.net/qq_32175379/article/details/60469987
说白了就是定义动态数组的

unordered_map(无序映射表)

//496
//建立哈希表用
class Solution {
public:
    vector<int> nextGreaterElement(vector<int>& findNums, vector<int>& nums) {
        vector<int> res(findNums.size());
        unordered_map<int, int> m;//建立哈希表,将值与索引建立联系
        for (int i = 0; i < nums.size(); ++i) {
            m[nums[i]] = i;//例如将nums数组的值与索引建立关系,这个m数组不是一般的数组,自行画图理解
        }
        for (int i = 0; i < findNums.size(); ++i) {
            res[i] = -1;
            int start = m[**findNums[i]**];//这个可以直接定位findNums中元素的值在nums中的位置
            for (int j = start + 1; j < nums.size(); ++j) {
                if (nums[j] > findNums[i]) {
                    res[i] = nums[j];
                    break;
                }
            }
        }
        return res;
    }
};

成员函数:
begin 返回指向容器起始位置的迭代器(iterator)
end 返回指向容器末尾位置的迭代器
cbegin 返回指向容器起始位置的常迭代器(const_iterator)
cend 返回指向容器末尾位置的常迭代器
Capacity:

size 返回有效元素个数
max_size 返回 unordered_map 支持的最大元素个数
empty 判断是否为空
Element access:

operator[] 访问元素
at 访问元素
Modifiers:

insert 插入元素
erase 删除元素
swap 交换内容
clear 清空内容
emplace 构造及插入一个元素
emplace_hint 按提示构造及插入一个元素
Observers:

hash_function 返回 hash 函数
key_eq 返回主键等价性判断谓词
Operations:

find 通过给定主键查找元素
count 返回匹配给定主键的元素的个数
equal_range 返回值匹配给定搜索值的元素组成的范围
Buckets:

bucket_count 返回槽(Bucket)数
max_bucket_count 返回最大槽数
bucket_size 返回槽大小
bucket 返回元素所在槽的序号

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
unordered_setunordered_map是C++标准库中的关联容器,它们的特点是元素的存储是无序的。也就是说,unordered_setunordered_map不会按照元素的插入顺序或者键的大小进行排序。因此,unordered_setunordered_map无法直接实现排序功能。 如果你需要对元素进行排序,你可以考虑使用其他容器,例如std::set和std::map。这些容器会根据元素的特性进行排序。如果你需要自定义排序规则,你可以使用比较函数或者函数对象来指定排序的方式。 另外,如果你需要对unordered_setunordered_map中的元素进行排序,并且你不需要保持元素的唯一性,你可以将元素拷贝到一个std::vector中,然后使用std::sort函数对vector进行排序。这样可以实现对元素的排序功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [unordered_setunordered_map用法详解](https://blog.csdn.net/weixin_43679037/article/details/118833261)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [C++ unordered_mapunordered_set的使用](https://blog.csdn.net/qq_61635026/article/details/126857258)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值