C++ 遍历 3D 数组'no match for operator='

C++ Iterate through 3d array 'no match for operator='

本文关键字:for operator match no 3D C++ 遍历 数组      更新时间:2023-10-16

我已经用谷歌搜索过了,常见的解决方案似乎是,迭代器必须是常量。但我仍然收到此错误。这是我的代码:

std::vector<std::vector<std::vector<std::string> > >::const_iterator itc;
std::vector<std::vector<std::string> >::const_iterator itb;
std::vector<std::string>::const_iterator ita;
for (ita = metadata.getTestVektor().begin(); ita != metadata.getTestVektor().end(); ++ita)
{
    for (itb = ita->begin(); itb != ita->end(); ++itb)
    {
        for (itc = itb->begin(); itc != itb->end(); ++itc)
        {
        }
    }
}

metadata.getTestVektor() 返回一个 3d vektor:

std::vector<std::vector<std::vector<std::string>>> testvektor;

日志:

/home/MetaDataCreator.cpp:20: error: no match for 'operator=' (operand types are 'std::vector<std::basic_string<char> >::const_iterator {aka __gnu_cxx::__normal_iterator<const std::basic_string<char>*, std::vector<std::basic_string<char> > >}' and 'std::vector<std::vector<std::vector<std::basic_string<char> > > >::iterator {aka __gnu_cxx::__normal_iterator<std::vector<std::vector<std::basic_string<char> > >*, std::vector<std::vector<std::vector<std::basic_string<char> > > > >}') for (ita = metadata.getTestVektor().begin(); ita != metadata.getTestVektor().end(); ++ita) ^

^ 指向"="符号

似乎你已经ita了,itc混淆了,ita具有最内层迭代器的类型。

但也要考虑 Joachim 所说的话 - 如果getTestVektor()按值返回,则在两个不同的向量上调用 begin()end()。不好!