std::list< pair<double, int> >::迭代器声明不起作用

std::list< pair<double, int> >::iterator declaration not working

本文关键字:gt lt 不起作用 迭代器 声明 int pair list std double      更新时间:2023-10-16

我遇到的问题是为类型列表声明迭代器list<两人>我觉得很明显有什么事在发生。谷歌不是我的朋友今天。

参见下面的for循环,假设使用命名空间std

        for (list< pair<double, int> >::iterator i = terms.begin(); i != terms.end(); ++i)
        {
            yval += pow(di, i->second) * i->first;
        }

这里的错误是一堵巨大的墙它们是随意读取的

 te<class _CharT, class _Traits, class _Alloc> bool
std::operator==(const std::basic_string
    <_CharT, _Traits, _Alloc>&, const _CharT*)
    e:mingwbin../lib/gcc/mingw32/4.7.1/include/c++/bits/basic_string.h:2516:5:
note:   temp
    late argument deduction/substitution failed:
    polynomial.cpp:40:44: note:   'std::list<std::pair<double, int> >::iterator {aka std::_Lis
    t_iterator<std::pair<double, int> >}' is not derived from 'const std::basic_string<_CharT,
     _Traits, _Alloc>'
    In file included from e:mingwbin../lib/gcc/mingw32/4.7.1/include/c++/bits/locale_facets
    .h:50:0,
                     from e:mingwbin../lib/gcc/mingw32/4.7.1/include/c++/bits/basic_ios.h:3
    9,
                     from e:mingwbin../lib/gcc/mingw32/4.7.1/include/c++/ios:45,
                     from e:mingwbin../lib/gcc/mingw32/4.7.1/include/c++/ostream:40,
                     from e:mingwbin../lib/gcc/mingw32/4.7.1/include/c++/iostream:40,
                     from polynomial.h:7,
                     from polynomial.cpp:1:
    e:mingwbin../lib/gcc/mingw32/4.7.1/include/c++/bits/streambuf_iterator.h:206:5:
note: t
    emplate<class _CharT, class _Traits> bool std::operator==(const std::istreambuf_iterator<_
    CharT, _Traits>&, const std::istreambuf_iterator<_CharT, _Traits>&)
    e:mingwbin../lib/gcc/mingw32/4.7.1/include/c++/bits/streambuf_iterator.h:206:5:
note:
     template argument deduction/substitution failed:
    polynomial.cpp:40:44: note:   'std::list<std::pair<double, int> >::iterator {aka std::_Lis
    t_iterator<std::pair<double, int> >}' is not derived from 'const std::istreambuf_iterator<
    _CharT, _Traits>'
    In file included from e:mingwbin../lib/gcc/mingw32/4.7.1/include/c++/mingw32/bits/c++al
    locator.h:34:0,
                     from e:mingwbin../lib/gcc/mingw32/4.7.1/include/c++/bits/allocator.h:4
    8,
                     from e:mingwbin../lib/gcc/mingw32/4.7.1/include/c++/deque:62,
                     from e:mingwbin../lib/gcc/mingw32/4.7.1/include/c++/queue:61,
                     from polynomial.h:5,
                     from polynomial.cpp:1:
    e:mingwbin../lib/gcc/mingw32/4.7.1/include/c++/ext/new_allocator.h:129:5:
note: templat
    e<class _Tp> bool __gnu_cxx::operator==(const __gnu_cxx::new_allocator<_Tp>&, const __gnu_
    cxx::new_allocator<_Tp>&)
    e:mingwbin../lib/gcc/mingw32/4.7.1/include/c++/ext/new_allocator.h:129:5:
note:   templ
    ate argument deduction/substitution failed:
    polynomial.cpp:40:44: note:   'std::list<std::pair<double, int> >::iterator {aka std::_Lis
    t_iterator<std::pair<double, int> >}' is not derived from 'const __gnu_cxx::new_allocator<
    _Tp>'
    In file included from e:mingwbin../lib/gcc/mingw32/4.7.1/include/c++/bits/stl_algobase.
    h:68:0,
                     from e:mingwbin../lib/gcc/mingw32/4.7.1/include/c++/deque:61,
                     from e:mingwbin../lib/gcc/mingw32/4.7.1/include/c++/queue:61,
                     from polynomial.h:5,
                     from polynomial.cpp:1:
    e:mingwbin../lib/gcc/mingw32/4.7.1/include/c++/bits/stl_iterator.h:813:5:
note: templat
    e<class _Iterator, class _Container> bool __gnu_cxx::operator==(const __gnu_cxx::__normal_
    iterator<_Iterator, _Container>&, const __gnu_cxx::__normal_iterator<_Iterator, _Container
    >&)
    e:mingwbin../lib/gcc/mingw32/4.7.1/include/c++/bits/stl_iterator.h:813:5:
note:   templ
    ate argument deduction/substitution failed:

创建mvce为我解决了这个问题,错误是for循环中的函数调用。

char sign = (i->first <= 0 || i == terms.begin)? '' :'+';

与::迭代器无关。感谢大家的宝贵时间和建议。