gpt4 book ai didi

c++ - 迭代器的统一初始化

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:28:54 26 4
gpt4 key购买 nike

我是 C++11 的新手,迭代器和统一初始化有问题,我不明白。

考虑以下未编译的示例:

#include <iostream>
#include <vector>

int main() {

std::vector<int> t{1, 2, 3, 4, 5};
auto iter{t.begin()};

for (; iter != t.end(); ++iter) {
std::cout << *iter;
}

return 0;
}

在第 6 行中,使用统一初始化对 vector 进行了初始化。在第 7 行中,我尝试对迭代器执行相同的操作。这是行不通的。将第 7 行更改为 auto iter = t.begin() 即可。我知道我可以为此简单地使用“基于范围的”,但问题是:为什么统一初始化不适用于迭代器但适用于基本类型,例如 int i{0};

最佳答案

当你使用初始化列表作为 auto 的初始化器时,声明的变量被推导为初始化列表。换句话说,iter声明为 std::initializer_list<vector<int>::iterator> ,而不是 vector<int>::iterator如您所料。

将其更改为 auto iter = t.begin()是继续进行的最佳方式。

关于c++ - 迭代器的统一初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24233796/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com