本文整理汇总了C++中unordered_map::try_emplace方法的典型用法代码示例。如果您正苦于以下问题:C++ unordered_map::try_emplace方法的具体用法?C++ unordered_map::try_emplace怎么用?C++ unordered_map::try_emplace使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类unordered_map
的用法示例。
在下文中一共展示了unordered_map::try_emplace方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: endpointQuery
//===========================================================================
// Public API
//===========================================================================
void Dim::endpointQuery(
int * cancelId,
IEndpointNotify * notify,
string_view name,
int defaultPort
) {
QueryTask * task = nullptr;
for (;;) {
*cancelId = ++s_lastCancelId;
auto ib = s_tasks.try_emplace(*cancelId);
if (ib.second) {
task = &ib.first->second;
break;
}
}
task->id = *cancelId;
task->notify = notify;
// if the name is the string form of an address just return the address
Endpoint end;
if (parse(&end, name, defaultPort)) {
task->ends.push_back(end);
taskPushEvent(task);
return;
}
// Asynchronous completion requires wchar version of:
wstring wname{toWstring(name)};
wstring wport{to_wstring(defaultPort)};
// extract non-default port if present in name
size_t pos = wname.rfind(L':');
if (pos != string::npos) {
wport = wname.substr(pos + 1);
wname.resize(pos);
}
WinError err = GetAddrInfoExW(
wname.c_str(),
wport.c_str(),
NS_ALL,
NULL, // namespace provider id
NULL, // hints
&task->results,
NULL, // timeout
&task->overlapped(),
&addressQueryCallback,
&task->cancel
);
if (err != ERROR_IO_PENDING)
addressQueryCallback(err, 0, &task->overlapped());
}