小编nun*_*jpg的帖子

Docker现在仍然无法在starto托管的虚拟服务器上运行吗?

在去年冬天,我尝试使用其docker镜像运行ShareLaTex.那时整个事情已经失败了,让docker在我的虚拟Ubuntu 14.04服务器上运行.所以今天我决定再试一次.虚拟服务器启动并运行了新的Ubuntu 14.04.

按照安装说明操作后直到执行

docker images

docker run
Run Code Online (Sandbox Code Playgroud)

要么

docker run hello-world
Run Code Online (Sandbox Code Playgroud)

我会回复这一行:

无法连接到Docker守护程序.docker守护程序是否在此主机上运行?

所以回到过去,讨论得出的结论是版本内核是不合适的,因为内核仅限于提供Starto.所以这是内核版本:

3.13.0-042stab111.12
Run Code Online (Sandbox Code Playgroud)

这是旧的讨论.

virtual docker server

7
推荐指数
1
解决办法
1004
查看次数

避免使用 std::unordered_map (和其他)进行双重搜索或不必要的构造

我想在 a 上找到一个带有键的元素std::unordered_map,或者如果它尚不存在则将其插入。

来自cppreference.com

std::unordered_map::emplace

如果容器中没有带有该键的元素,则将新元素插入到使用给定参数就地构造的容器中。

...

即使容器中已经存在带有该键的元素,也可以构造该元素,在这种情况下,新构造的元素将立即被销毁。

...

返回一个对,其中包含插入元素的迭代器,如果没有发生插入,则返回已存在的元素,以及表示是否发生插入的 bool。True 表示插入,False 表示不插入。

我已经针对我的环境对其进行了测试,即使相同的密钥已经存在,它实际上也会构造该元素。

这可能是一个主要的性能问题。

从 c++17 开始,try_emplace如果不发生插入,则可以避免这种构造。

我仅限于 c++14,环顾四周后,我发现了相同行为的两种替代方案:

  • 首先使用std::unordered_map::find,如果该元素不存在则使用std::unordered_map::emplace。如果密钥不存在,我将支付冗余容器搜索费用。

  • 使用std::unordered_map::emplace。如果密钥存在,我将支付不必要的对象构造和销毁费用。

我的假设是否正确,即我必须在 C++17 之前做出这种权衡?

c++ c++14

5
推荐指数
1
解决办法
304
查看次数

标签 统计

c++ ×1

c++14 ×1

docker ×1

server ×1

virtual ×1