我的目標是能夠擁有一個索引向量,并在一個類中導航到具有向量變體和該類的向量。
假設我有一個未知大小的“索引向量”,{0, 4, 7, 2}我想以某種方式使用它來訪問someVector[0][4][7][2].
someVector 是一個類節點,定義為:
class node
{
public:
node operator[](unsigned int index)
{
return std::get<node>(children[index]);
}
private:
std::vector<std::variant<node, std::string>> children;
}
我有使用回圈和參考的想法,但無法弄清楚。我的想法是
node elementRef = &nodeObject;
for (int i = 0; i < vector.size(); i )
{
tempElementRef = &elementRef[indexVector[I]];
elementRef = tempElementRef;
}
uj5u.com熱心網友回復:
使用 C 20,你可以這樣做:
node accessNode(node n, std::span<unsigned int> span)
{
return span.size() ? accessNode(n[span[0]], span.subspan(1)) : n;
}
用法示例:
std::vector<unsigned int> coordinates = {0, 4, 7, 2};
accessNode(someNode, coordinates);
注意:處理來自壞索引或非節點子節點的例外由您決定。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/329611.html
標籤:C
