首页 > 解决方案 > c ++遍历列表[然后操作来自同一类的不同迭代器]

问题描述

假设我们有一个名为Student并且data是列表的类。

std::list<Student>::iterator<Student> it;
for(it = data.begin(); it != data.end(); ++it){
    std::cout<<(*it)->name;
    it->print();
}


   std::list<Student>::iterator<Student> it2;
for(it2 = data.begin(); it2 != data.end(); ++it2){
    std::cout<<(*it2)->name;
    it2->print();
}

mult当我们对从两个不同列表中获得的迭代器进行加法(或乘法)时, 代表什么。我的意思是如果我们乘以*it和会发生什么*it2

for(it = data.begin(); it != data.end(); ++it){

    Student mult = (*it) * (*it2);

   }

你能从概念上举一个例子吗?

标签: c++list

解决方案


如果编译:

Student mult = (*it) * (*it2);

定义了一个operator*重载Student- 但它与迭代器没有任何关系。迭代器被取消引用 ( *),因此您有两个对Students 的引用被相乘。

最有可能找到答案的地方:

Student operator*(const Student&, const Student&) {
    // the answer to your question is in here
}

推荐阅读