繁体   English   中英

寻找代码的一部分的解释

[英]looking for explanation for a part of a code

我有由id代表的学生要在特定学期添加课程的功能。 这段代码是正确的,但是当他这样做时,我不理解该部分
for (size_t i = 0; i < (*iteratorVectorP).size(); i++) ...

void add_course(map<int, map<int, vector<course *> * > > &DB, int 
     semester, int id, course c)
{
    auto iterator = DB.find(id);    //find id as key, set map to value
    vector<course*> *pointer = new vector<course*>;
    if (iterator != DB.end())
    {
        auto iterator1 = ((*iterator).second).find(semester);   //find                 
        semester as key, set vector to value
        if (iterator1 == (*iterator).second.end())      //if semester does not exist
        {
            pointer->push_back(new course(c));
            (iterator->second)[semester] = pointer;
        }
        else        //if semester exist
        {
            auto iteratorVectorP = (iterator->second)[semester];
            // i do not understand what his doing here 
            for (size_t i = 0; i < (*iteratorVectorP).size(); i++)
            {
                if (c == *(*iteratorVectorP)[i])
                {
                    return;     //exit when class exist
                }
                else
                {
                    (*iteratorVectorP).push_back(new course(c));
                    return;
                }
            }
        }
    }
}

iteratorVectorP的定义是向量,因此for循环正在迭代该过程,并尝试将其添加到向量中(如果不存在)。

看起来iteratorVectorP是一个指针,因此调用(* iteratorVectorP).size()将获得其指向的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM