简体   繁体   English

列表中的C ++迭代器

[英]C++ iterators in lists

I have a question about iterators on list s. 我对list的迭代器有疑问。 In function I have to compare the double s, but I don't know how to get the elements from the second level, with only iterators to the first level. function我必须比较double ,但是我不知道如何仅从迭代器到第一级从第二级获取元素。

void function (std::list<std::list <double>>::iterator *begin, std::list<std::list <double>>::iterator *end)
{
    //do something
}

int main()
{
    std::list <std::list <double>> a_list;
    function (a_list.begin(), a_list.end());
}
void function (list<list <double> >::iterator begin, list<list <double> >::iterator end)
{
    for(std::list<std::list <double> >::iterator it =begin;it!= end;it++)
    {
        for(std::list <double>:: iterator it_inner = (*it).begin(); it_inner != (*it).end();it_inner++)
        {
            printf("%f ",*it_inner );
        }
        printf("\n");
    }

}



int main()
{
    std::list <std::list <double> > a_list;
    for(int i=0;i<=3;i++)
    {
        std::list <double> inner_list;
        for(double j=0;j<=8;j+=2.2)
        {
            inner_list.push_back(j);
        }
        a_list.push_back(inner_list);
    }    
    function (a_list.begin(), a_list.end());
}

You can pass the iterators as parameters or just the entire list, like this: 您可以将迭代器作为参数或仅将整个列表作为参数传递,如下所示:

#include <iostream>
#include <list>

using namespace std;

void funcA (list<list<double>>::iterator begin, list<list<double>>::iterator end) {
    //do something

    list<double>::iterator sublist1 = begin->begin();
    cout << *sublist1 + 1 << endl;
}

void funcB (list<list<double>> list) {

    for (auto&& sublist: list) {
        for (auto&& value: sublist) {
            cout << value << ' ';
        }
    }
    cout << endl;
}


int main() {
    list <list<double>> a_list = {{1,2,3},{4,5,6}};

//  list<list<double>>::iterator a = a_list.begin();
//  list<double>::iterator b = a->begin();
//  
//  cout << *b + 2 << endl;

    funcA(a_list.begin() , a_list.end());
    funcB(a_list);
}

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

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