首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将整数转换为std::list的迭代器

将整数转换为std::list的迭代器
EN

Stack Overflow用户
提问于 2020-04-28 16:37:02
回答 2查看 1.2K关注 0票数 0

下面是简单的代码:

代码语言:javascript
复制
#include <iostream>
#include <list>
#include <iterator>
using namespace std;

int main()
{
    list<int> ints = { 3, 6, 1, 5, 8 };
    int index;

    index = 2;
    std::list<int>::iterator it = ints.begin() + index;
    cout << "Element at index " << index << " is " << *it << '\n';

    return 0;
}

编撰上,它说:

错误:不匹配“operator+”(操作数类型为‘std::__cxx11::list::iterator’{aka‘std::_List_iterator’}和‘int’) std::list::iterator it = ints.begin() + index; 商业、金融、金融等领域的商业、金融等方面的自愿性、自愿

我明白编译器想说什么,但我不知道如何解决这个问题。如何将int转换为iterator并在该索引处获取元素?我确实寻找过类似的问题,但大多数问题都是以相反的方向进行转换的,这可以使用std::distance来完成,而其余的问题则是针对不同的容器。

谢谢你的帮忙!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-28 16:42:38

使用std::next

如果您认为distance是两个迭代器之间的运算符-,那么nextprevadvance分别是迭代器和整数之间的+-+=

这些函数意味着以相同的方式对待所有迭代器,尽管不同迭代器的操作复杂度不同。对于使用“前向迭代器”的std::list,这些都是线性的。对于使用“随机访问迭代器”的std::vector来说,这些都是常量。

票数 3
EN

Stack Overflow用户

发布于 2020-04-28 16:45:45

将整数转换为std::list的迭代器

整数和迭代器是非常独立的概念,因此不清楚这种转换有什么意义。如何将椰子转化为传递性?

..。在那个索引上得到元素?

现在,这更有意义了。然而,List元素没有索引。但据推测,索引i从一开始就意味着ith (基于零的)连续元素。

标准库有一个函数:std::next。这样做(使用非随机访问迭代器)是在一个循环中增加给定次数的迭代器。直观地说,这类运算的渐近复杂性是线性的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61485314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档