gpt4 book ai didi

c++ - 如何声明任意深度的对?

转载 作者:行者123 更新时间:2023-12-03 07:00:25 25 4
gpt4 key购买 nike

一对整数可以声明为:std::pair<int, std::pair<int, int> > A;类似的一对整数对为 std::pair<int, std::pair<int, std::pair<int, int> > >A;我想在我的代码中声明一个任意的“对”。即,根据某个值(仅在运行时已知),我想要一对整数( n = 1 )或一对整数对( n = 2 )等等。想知道如何在 C++ 中有效地做到这一点?
以下是 Python 中的片段代码:

import numpy as np

n = 4 # a value known at runtime
m = 2 # a value known at runtime
def PP(A, j):
A_s = []
if j == n-1:
for i in range(1, m):
A_s.append((i, A[i]))
else:
for i in range(1, m):
A_c = A[i]
A_s.append((i, PP(A_c, j+1)))
return A_s

j = 0
# The dimension of A is known at runtime.
# Will have to create np.ones((m, m, m, m, m)) if n = 5
A = np.ones((m, m, m, m))
B = PP(A, 0)

最佳答案

与 Python 不同,C++ 是一个 statically-typed language .因此,如果要存储的内容的结构或大小直到运行时才知道,则不能使用类型本身(如嵌套对)来描述特定结构。相反,您要做的是使用可以动态调整大小的 C++ 类型。即, std::vector<int> 是在 C++ 中存储动态数量的整数的惯用且有效的方法。
如果您真的想要像 Python 示例 ( [(1, [(1, [(1, [(1, 1.0)])])])] ) 中那样的树状结构,这也可以在 C++ 中实现。但这需要更多的工作。参见例如 Binary Trees in C++: Part 1 .

关于c++ - 如何声明任意深度的对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64585074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com