我正在尝试创建一个通用的图形结构,但我遇到了顶点和边之间的这种循环依赖关系。我像这样定义我的 Vertex 和 Edge 类:
template<typename EdgeType>
struct Vertex {
std::vector<EdgeType> successors;
};
template<typename EdgeCostType, typename VertexWrapper>
struct Edge {
EdgeCostType cost;
VertexWrapper source;
VertexWrapper dest;
};
Run Code Online (Sandbox Code Playgroud)
我想用类似的东西实例化它Vertex<Edge<int, std::shared_ptr<decltype(v)>>> v;,但我显然不能。我能做些什么来解决这种循环依赖?
编辑:
我认为这个问题归结为使用当前模板作为当前模板的模板参数之一的模板参数,例如如何做这样的事情:
template<typename VertexWrapper>
struct Vertex {
std::vector<pair<int, VertexWrapper<Vertex>>> successors;
};
Run Code Online (Sandbox Code Playgroud) 对于我的项目 ci/cd,我运行tsc --noEmit以确保代码类型检查。然而,我有一些运行的脚本ts-node,最近我遇到了一个错误,tsc说我的代码有效但ts-node崩溃了(由于模块的时髦东西)。有没有一种方法可以让我不必使用tsc代理来检查ts-node类型检查/运行是否正确?
这些选项看起来都没有多大帮助:https://github.com/TypeStrong/ts-node#cli-flags
有没有更惯用的方法来查找数组中是否包含某个值
fn valueInArray(value: u32, array: []const u32) bool {
for (array) |num| {
if (value == num) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)