我的程序中有一个像树一样的结构,如下所示:
struct A {
vector<string> m_vStr;
};
struct B {
vector<A> m_vA;
// implemented with nested for loops
const string& getStringWithIndex(size_t i) const;
};
结构几乎不会改变,但我经常访问叶子(我的意思是m_vStr
的元素)经常调用getStringWithIndex
所以我决定有类似下列之一:
vector<const string*> vstr1;
vector<const string&> vstr2; // Error forming pointer to reference type
vector<reference_wrapper<const string&>> vstr3; // forming pointer to reference type
每当结构发生变化时都会更新,我可以使用它们来更有效地调用getStringWithIndex
而不是嵌套for循环。如你所见,最后两个生成错误(为什么?),我想知道我在这里有什么选择,主要是想知道如何存储这些const引用以便于访问。我可以使用C ++ 11到C ++ 17中引入的任何新功能。