从函数返回向量

Ste*_*ano 1 c++ iterator vector

我有两个类,第一个包含vector和一个像这样的get方法:

std::vector<mytype> const& MyClassA::getvector(std::vector<mytype>::iterator &it)
{
    it = this->myiterator;

    return this->myvector;
}

std::vector<mytype> myvector;
std::vector<mytype>::iterator myiterator;
Run Code Online (Sandbox Code Playgroud)

我还有另一个课我应该使用矢量:

MyClassB::myfunction()
{
    std::vector<mytype>::iterator it;
    std::vector<mytype> vector = MyClassA->getvector(it);

    if (it > vector.begin())
    {
        ....
        (--it)->dosomestuff();
        ....
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我得到一个运行时异常:迭代器不兼容.为什么?

编辑1

void MyClassA::setvector(mytype myelement)
{
    this->myvector.push_back(myelement);
    this->myiterator = this->myvector.end() - 1;
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*som 10

您已在调用代码中创建了向量的副本,并且迭代器无效,因为它仍指向原始向量.

你可能想要这样的东西:

const std::vector<mytype> & vector = MyClassA->getvector(it);
Run Code Online (Sandbox Code Playgroud)