From 4ffe1d3acca5a4b25545a70d3658249914fe5be2 Mon Sep 17 00:00:00 2001 From: Ilya Fedin Date: Mon, 15 Mar 2021 19:22:32 +0400 Subject: [PATCH] Use base::flat_map for pointer keys --- Telegram/SourceFiles/apiwrap.cpp | 18 +++++++++--------- .../chat_helpers/field_autocomplete.cpp | 14 +++++++------- .../profile/profile_block_group_members.cpp | 10 +++++----- .../profile/profile_block_group_members.h | 2 +- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/Telegram/SourceFiles/apiwrap.cpp b/Telegram/SourceFiles/apiwrap.cpp index ef434f50bc..6ee12a8d33 100644 --- a/Telegram/SourceFiles/apiwrap.cpp +++ b/Telegram/SourceFiles/apiwrap.cpp @@ -2600,7 +2600,7 @@ void ApiWrap::clearWebPageRequests() { void ApiWrap::resolveWebPages() { auto ids = QVector(); // temp_req_id = -1 using IndexAndMessageIds = QPair>; - using MessageIdsByChannel = QMap; + using MessageIdsByChannel = base::flat_map; MessageIdsByChannel idsByChannel; // temp_req_id = -index - 2 ids.reserve(_webPagesPending.size()); @@ -2617,18 +2617,18 @@ void ApiWrap::resolveWebPages() { auto channel = item->history()->peer->asChannel(); auto channelMap = idsByChannel.find(channel); if (channelMap == idsByChannel.cend()) { - channelMap = idsByChannel.insert( + channelMap = idsByChannel.emplace( channel, IndexAndMessageIds( idsByChannel.size(), QVector( 1, - MTP_inputMessageID(MTP_int(item->id))))); + MTP_inputMessageID(MTP_int(item->id))))).first; } else { - channelMap.value().second.push_back( + channelMap->second.second.push_back( MTP_inputMessageID(MTP_int(item->id))); } - i.value() = -channelMap.value().first - 2; + i.value() = -channelMap->second.first - 2; } } } else { @@ -2648,10 +2648,10 @@ void ApiWrap::resolveWebPages() { } QVector reqsByIndex(idsByChannel.size(), 0); for (auto i = idsByChannel.cbegin(), e = idsByChannel.cend(); i != e; ++i) { - reqsByIndex[i.value().first] = request(MTPchannels_GetMessages( - i.key()->inputChannel, - MTP_vector(i.value().second) - )).done([=, channel = i.key()]( + reqsByIndex[i->second.first] = request(MTPchannels_GetMessages( + i->first->inputChannel, + MTP_vector(i->second.second) + )).done([=, channel = i->first]( const MTPmessages_Messages &result, mtpRequestId requestId) { gotWebPages(channel, result, requestId); diff --git a/Telegram/SourceFiles/chat_helpers/field_autocomplete.cpp b/Telegram/SourceFiles/chat_helpers/field_autocomplete.cpp index ee32abafa7..1a318aa516 100644 --- a/Telegram/SourceFiles/chat_helpers/field_autocomplete.cpp +++ b/Telegram/SourceFiles/chat_helpers/field_autocomplete.cpp @@ -436,7 +436,7 @@ void FieldAutocomplete::updateFiltered(bool resetScroll) { } else if (_type == Type::BotCommands) { bool listAllSuggestions = _filter.isEmpty(); bool hasUsername = _filter.indexOf('@') > 0; - QMap bots; + base::flat_map bots; int32 cnt = 0; if (_chat) { if (_chat->noParticipantInfo()) { @@ -451,7 +451,7 @@ void FieldAutocomplete::updateFiltered(bool resetScroll) { if (user->botInfo->commands.isEmpty()) { continue; } - bots.insert(user, true); + bots.emplace(user, true); cnt += user->botInfo->commands.size(); } } @@ -460,7 +460,7 @@ void FieldAutocomplete::updateFiltered(bool resetScroll) { _user->session().api().requestFullPeer(_user); } cnt = _user->botInfo->commands.size(); - bots.insert(_user, true); + bots.emplace(_user, true); } else if (_channel && _channel->isMegagroup()) { if (_channel->mgInfo->bots.empty()) { if (!_channel->mgInfo->botStatus) { @@ -476,7 +476,7 @@ void FieldAutocomplete::updateFiltered(bool resetScroll) { if (user->botInfo->commands.isEmpty()) { continue; } - bots.insert(user, true); + bots.emplace(user, true); cnt += user->botInfo->commands.size(); } } @@ -510,9 +510,9 @@ void FieldAutocomplete::updateFiltered(bool resetScroll) { } } } - if (!bots.isEmpty()) { - for (QMap::const_iterator i = bots.cbegin(), e = bots.cend(); i != e; ++i) { - UserData *user = i.key(); + if (!bots.empty()) { + for (auto i = bots.cbegin(), e = bots.cend(); i != e; ++i) { + UserData *user = i->first; for (int32 j = 0, l = user->botInfo->commands.size(); j < l; ++j) { if (!listAllSuggestions) { QString toFilter = (hasUsername || botStatus == 0 || botStatus == 2) ? user->botInfo->commands.at(j).command + '@' + user->username : user->botInfo->commands.at(j).command; diff --git a/Telegram/SourceFiles/profile/profile_block_group_members.cpp b/Telegram/SourceFiles/profile/profile_block_group_members.cpp index 778453be67..f72c5e9643 100644 --- a/Telegram/SourceFiles/profile/profile_block_group_members.cpp +++ b/Telegram/SourceFiles/profile/profile_block_group_members.cpp @@ -140,7 +140,7 @@ void GroupMembersWidget::refreshUserOnline(UserData *user) { _now = base::unixtime::now(); - auto member = getMember(it.value()); + auto member = getMember(it->second); member->statusHasOnlineColor = !user->isBot() && Data::OnlineTextActive(user->onlineTill, _now); member->onlineTill = user->onlineTill; @@ -420,16 +420,16 @@ void GroupMembersWidget::setItemFlags( auto GroupMembersWidget::computeMember(not_null user) -> not_null { - auto it = _membersByUser.constFind(user); + auto it = _membersByUser.find(user); if (it == _membersByUser.cend()) { auto member = new Member(user); - it = _membersByUser.insert(user, member); + it = _membersByUser.emplace(user, member).first; member->statusHasOnlineColor = !user->isBot() && Data::OnlineTextActive(user->onlineTill, _now); member->onlineTill = user->onlineTill; member->onlineForSort = Data::SortByOnlineValue(user, _now); } - return it.value(); + return it->second; } void GroupMembersWidget::onUpdateOnlineDisplay() { @@ -461,7 +461,7 @@ void GroupMembersWidget::onUpdateOnlineDisplay() { GroupMembersWidget::~GroupMembersWidget() { auto members = base::take(_membersByUser); - for_const (auto member, members) { + for (const auto &[_, member] : members) { delete member; } } diff --git a/Telegram/SourceFiles/profile/profile_block_group_members.h b/Telegram/SourceFiles/profile/profile_block_group_members.h index 804736d329..e7a794cef5 100644 --- a/Telegram/SourceFiles/profile/profile_block_group_members.h +++ b/Telegram/SourceFiles/profile/profile_block_group_members.h @@ -79,7 +79,7 @@ private: not_null megagroup); bool addUsersToEnd(not_null megagroup); - QMap _membersByUser; + base::flat_map _membersByUser; bool _sortByOnline = false; TimeId _now = 0;