keywords: [C++]vector等容器的元素引用问题

示例代码:

struct TestStru
{
    int val;
    TestStru()
    {
        val = -1;
    }
};



std::vector<TestStru> TestArr;

TestStru e1;
TestArr.push_back(e1);

TestStru& e = TestArr[0];
e.val = 999;

TestStru e2;
TestArr.push_back(e2);

变量e为数组TestArr内元素的引用,但是当执行TestArr.push_back(e2);时,e就失效了。原因是push_back的时候内部容器有扩容,另外vector的默认容量为0。