gpt4 book ai didi

c++ - 索引 vs 迭代器——哪个效率更高?

转载 作者:行者123 更新时间:2023-11-30 02:21:20 26 4
gpt4 key购买 nike

我想知道如果我想遍历一个 vector ,下面哪一种方法会更有效。第一个选项:

int i;
for(i = 0; i<vector.size(); i++)
{
cout << vector[i];
}

第二个选项:

vector<type>::iterator it;
for(it = vector.begin(); it != vector.end(); it++)
{
cout << *it;
}

最佳答案

通往 hell 的道路是用善意铺成的;或者在我们的例子中是过早的优化。编译器所做的优化应该使每个循环都等效。让编译器为您工作,并在这种情况下专注于可读性和可维护性。正如其他人指出的那样,std::cout是您示例中的瓶颈,而不是循环本身。

如果您使用的是 C++11 或更高版本,则 range-based for loops非常易于使用和可读性。

for (const auto & element : myVector)
{
cout << element;
}

否则,如果我需要知道元素的位置,我发现使用 vector::size() 会更容易。和指数方法。如果我不关心那个,那么我几乎总是使用 vector<type>::iterator .在我看来,这两种方法的可读性是等效的,迭代器是所有各种 STL 容器的更标准方法。

关于c++ - 索引 vs 迭代器——哪个效率更高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48449775/

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