containers 相关问题

容器是类,数据结构或抽象数据类型,其实例是其他对象的集合。容器通常使用泛型或模板,以便可以添加各种对象。

如何在不迭代的情况下获取ES6 Map的最后一个元素?

如何在不迭代(forEach或for of)遍历整个容器的情况下获取ES6 Map/Set的最后一个元素?

回答 3 投票 0

pm2 命令无法从 docker 镜像运行

我的 docker 文件中有一个 pm2 命令,当容器启动时,该命令应该在容器内运行: CMD [“pm2”,“启动”,“ecosystem.local.json”] CMD [“pm2”,...

回答 2 投票 0

Docker 的 `docker0` 设备反复死机(`inet addr` 消失)

我正在运行 Docker 版本 1.4.1,在 Ubuntu 14.04 上构建 5bc2ff8。当我 docker 运行任何容器时,几分钟后我的 docker0 网桥“死亡”,并且容器停止能够访问网络......

回答 5 投票 0

C++17/20 - 固定大小容器类的类似数组的初始化

我有一个专门的模板化容器类,其中包含固定大小的数组(大小由模板定义): 模板 类容器{ 受保护: T _arr[N]; 标准::s...

回答 1 投票 0

如何通过一组相互依赖的容器来组合规模?

在我的 docker-compose.yml 中,我有一个服务 A,它有服务 B 和 C 作为客户端。我想说,为了我的项目的目的,这三个都可以分组来模拟一个“系统”。如果我...

回答 1 投票 0

nextcloud 无法创建管理员用户

尝试创建管理员用户时出错: 尝试创建管理员用户时出错:无法连接到数据库:驱动程序中发生异常:SQLSTATE[HY000] [1045] 访问被拒绝...

回答 2 投票 0

使用 constexpr if 定义并声明 const std::array

我正在尝试实现高斯-勒让德求积,我想要一个模板化函数 将点数作为模板参数。 现在我有这个: 模板 我正在尝试实现高斯-勒让德求积,并且我想要一个模板化函数 将点数作为模板参数。 现在我有这个: template<int number_of_quadrature_points> double gaussian_quadrature_integral_core(double (*f)(double), double from, double to){ double scaling_factor = (to-from)/2; double average_factor = (from+to)/2; std::array<double, number_of_quadrature_points> factors; std::array<double, number_of_quadrature_points> points; if constexpr(number_of_quadrature_points == 2){ factors = {1, 1}; points = {-1.0/sqrt(3), 1.0/sqrt(3)}; } if constexpr(number_of_quadrature_points == 3){ factors = {5.0/9.0, 8.0/9.0, 5.0/9.0}; points = {-sqrt(3.0/5.0), 0, sqrt(3.0/5.0)}; } double sum = 0; for(int i = 0; i < number_of_quadrature_points; i++){ sum += factors.at(i)*((*f)(scaling_factor*points.at(i)+average_factor)); } sum *= scaling_factor; return sum; } 如您所见,当模板参数发生变化时,不仅数组大小发生变化,而且内容也发生变化,但对于给定的大小,内容是众所周知的。出于这个原因,我认为如果 std::arrays 是 const static 会更好,因为该函数被调用很多次。 现在我只能使用 if constexpr 来声明数组,但是如何使用它来定义和声明数组,以便它在 if constexpr 范围之外可见并且数组只定义一次? 添加两个辅助函数就足够了(如果您使用的是 C++20): template<unsigned N> constexpr auto init_factors() { std::array<double, N> rv; if constexpr(N == 2){ rv = {1., 1.}; } else { rv = {5.0/9.0, 8.0/9.0, 5.0/9.0}; } return rv; } template<unsigned N> constexpr auto init_points() { std::array<double, N> rv; if constexpr(N == 2){ rv = {-1.0/std::sqrt(3.), 1.0/std::sqrt(3.)}; } else { rv = {-std::sqrt(3.0/5.0), 0, std::sqrt(3.0/5.0)}; } return rv; } template<unsigned number_of_quadrature_points> double gaussian_quadrature_integral_core(double (*f)(double), double from, double to) { static constexpr auto factors = init_factors<number_of_quadrature_points>(); static constexpr auto points = init_points<number_of_quadrature_points>(); [...] 为了防止使用错误的点数,您可以添加 static_assert template<unsigned number_of_quadrature_points> double gaussian_quadrature_integral_core(double (*f)(double), double from, double to) { static_assert(number_of_quadrature_points==2||number_of_quadrature_points==3); ...或者如果您想稍后进行专业化,请阻止使用 SFINAE 进行匹配: #include <type_traits> template<unsigned number_of_quadrature_points> std::enable_if_t<number_of_quadrature_points==2||number_of_quadrature_points==3, double> gaussian_quadrature_integral_core(double (*f)(double), double from, double to) { 您可能有模板变量: template <std::size_t N> static constexpr std::array<double, N> factors; template <std::size_t N> static constexpr std::array<double, N> points; template <> constexpr std::array<double, 2> factors<2>{{1, 1}}; template <> constexpr std::array<double, 2> points<2>{{-1.0 / sqrt(3), 1.0 / sqrt(3)}}; template <> constexpr std::array<double, 3> factors<3>{{5.0 / 9.0, 8.0 / 9.0, 5.0 / 9.0}}; template <> constexpr std::array<double, 3> points<3>{{-sqrt(3.0 / 5.0), 0, sqrt(3.0 / 5.0)}}; 然后 template<int number_of_quadrature_points> double gaussian_quadrature_integral_core(double (*f)(double), double from, double to) { const double scaling_factor = (to - from) / 2; const double average_factor = (from + to) / 2; double sum = 0; for(int i = 0; i < number_of_quadrature_points; i++){ sum += factors<number_of_quadrature_points>[i] * ((*f)(scaling_factor * points<number_of_quadrature_points>[i] + average_factor)); } sum *= scaling_factor; return sum; } 演示 请注意,如果您没有 constexpr constexpr(而 const 没有),则必须将 sqrt 替换为 std::。 您可以使用本主题中类似的内容: 有没有办法在 C++ 模板特化中对常量值参数设置条件? 因此,我们使用 std::enable_if 和 SFINAE 创建两个模板专业化。我们通过模板参数number_of_quadrature_points来区分它们。这样我们就有了全局参数,不必多次定义和实例化。此代码使用 c++17 编译。 我还建议使用现代方法 std::function<> 而不是函数指针。 #include <array> #include <cmath> #include <iostream> #include <functional> template<int number_of_quadrature_points, typename E=void> struct gaussian_quadrature_params { }; template<int number_of_quadrature_points> struct gaussian_quadrature_params<number_of_quadrature_points, std::enable_if_t<(number_of_quadrature_points==2)> > { constexpr static const std::array<double, number_of_quadrature_points> factors = {1, 1}; constexpr static const std::array<double, number_of_quadrature_points> points = {-1.0/sqrt(3), 1.0/sqrt(3)}; }; template<int number_of_quadrature_points> struct gaussian_quadrature_params<number_of_quadrature_points, std::enable_if_t<(number_of_quadrature_points==3)> > { constexpr static const std::array<double, number_of_quadrature_points> factors = {5.0/9.0, 8.0/9.0, 5.0/9.0}; constexpr static const std::array<double, number_of_quadrature_points> points = {-sqrt(3.0/5.0), 0, sqrt(3.0/5.0)}; }; double f(double x) { return x; } template<int number_of_quadrature_points> double gaussian_quadrature_integral_core(std::function<double(double)> f, double from, double to){ double scaling_factor = (to-from)/2; double average_factor = (from+to)/2; double sum = 0; for(int i = 0; i < number_of_quadrature_points; i++){ sum += gaussian_quadrature_params<number_of_quadrature_points>::factors.at(i)*(f(scaling_factor*gaussian_quadrature_params<number_of_quadrature_points>::points.at(i)+average_factor)); } sum *= scaling_factor; return sum; } int main() { std::cout << gaussian_quadrature_integral_core<2>(f, -1.0, 1.0) << std::endl; std::cout << gaussian_quadrature_integral_core<3>(f, -1.0, 1.0) << std::endl; } 怎么样 // N: number_of_quadrature_points template<int N> double gaussian_quadrature_integral_core(double (*f)(double), double from, double to) { constexpr std::array<double, N> factors = []() ->std::array<double, N>{ if constexpr(N == 2) return {1.0, 1.0}; else if constexpr(N == 3) return {5.0 / 9.0, 8.0 / 9.0, 5.0 / 9.0}; // ... other N cases }(); constexpr std::array<double, N> points= []()->auto{ if constexpr(N == 2) return std::array<double, N>{-1.0 / std::sqrt(3), 1.0 / std::sqrt(3)}; else if constexpr(N == 3) return std::array<double, N>{-std::sqrt(3.0 / 5.0), 0, std::sqrt(3.0 / 5.0)}; // ... other N cases }(); double scaling_factor = (to - from) / 2; double average_factor = (from + to) / 2; double sum = 0; for (int i = 0; i < N; i++) sum += factors.at(i)*((*f)(scaling_factor * points.at(i) + average_factor)); sum *= scaling_factor; return sum; } 使用 if constexpr 声明和定义数组。

回答 4 投票 0

Jenkins 作为 AKS 上的容器 - Docker in Docker 方法

我们正在尝试将 jenkins 作为 AKS 集群中的容器运行。对于这个用例,我们需要以 docker 方法实现 docker,并有一个执行容器(存在于 jenkins 从属 pod 中)来

回答 1 投票 0

如何在使用 Windows 主机时挂载 Docker 卷?

在 Windows 主机下安装 Docker 卷对我来说是一个巨大的痛苦,而且我无法让它工作。 目前我得到了以下简单的 Dockerfile: 来自 php:5-apache 运行 apt-...

回答 5 投票 0

如何在 k8cluster 托管的服务器中安装 jmeter 服务器代理

我正在尝试从 jmeter 收集 perfmon 结果并在我的 jmeter 中安装 perfmon 插件。 我需要执行哪些步骤才能将服务器代理安装到 k8cluster 中的 pod 或主机? 我去了我...

回答 1 投票 0

Kubernetes 使用默认的 docker 注册表而不是 quay 或其他

我已经部署了一个本地 kubernetes 集群用于学习,直到昨天为止都运行良好,但我现在面临的问题是默认使用 quay.io 来提取显然没有 IM 的图像...

回答 1 投票 0

如何实现异构查找,又名专门化模板类,最大限度地减少代码重复

考虑这样一个类(省略细节): 模板 类 my_flat_map { // 许多成员函数使用 const ref 作为键 自动查找(K const& key) ...

回答 1 投票 0

Docker中Python与InfluxDB的通信

我正在尝试创建一个应用程序,让我可以将数据写入 Docker 中的 InfluxDB。当我在本地执行代码并在 Docker 上运行 Influx 时,一切正常。 我现在正在尝试将两者都放在

回答 1 投票 0

连接到 Synology Container Manager 上相邻容器中的 Mariadb

我正在使用 Synology Container Manager。我只有两个容器。一种使用 ProjectSend,另一种使用 Mariadb。两个容器都已启动并正在运行(根据容器管理器)。 第一次访问时

回答 1 投票 0

使用 docker compose 连接 Spring api REST 容器与 MySQL 容器

使用互联网上的一些指导、github上的存储库、教程等等,我正在尝试使用react-spring-mysql堆栈运行一个应用程序。根据我对 mysql 容器的理解,它是拒绝的......

回答 1 投票 0

拦截 Docker 容器上的 GitHub 工作流取消

我正在使用工作流在 GitHub Actions 上运行测试,该工作流使用我创建的自定义 Docker 映像。 取消工作流时,GitHub 根据文档杀死 docker 容器。 有没有...

回答 1 投票 0

运行已附加(未分离)的 AWS ECS 任务

是否有简单的方法来运行附加的 ECS 任务或仅在容器运行时跟踪日志(即显示所有关联日志后分离)? 使用 AWS CLI (1.17.0) 和 ecs-...

回答 2 投票 0

.Net API Azure 应用服务在负载下启动时挂起

我在 Azure 应用服务中托管的 .NET API 遇到问题。应用程序在正常负载下启动没有任何问题,但是当负载增加时,应用程序在启动过程中挂起......

回答 1 投票 0

ASP.NET Core + Docker 无法在指定端口上访问

我无法访问内部运行 ASP.NET Core 3.1 应用程序的容器。 目标是在端口 5000 上的容器中运行应用程序。当我使用标准 VS pro 在本地运行它时...

回答 3 投票 0

gitlab docker 容器不覆盖最新标签

我正在尝试在Gitlab中使用ci / cd创建自己的容器并将它们上传到Gitlab中。但该项目的latest标签预计会被替换,但在下次上传时不会被替换。 ...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.