保持const引用的向量到C ++中的结构树的叶子对象

时间:2017-11-23 04:30:48

标签: c++ c++11

我的程序中有一个像树一样的结构,如下所示:

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中引入的任何新功能。

0 个答案:

没有答案