gpt4 book ai didi

c++ - 为什么 C++ STL 容器开始和结束函数按值而不是常量引用返回迭代器?

转载 作者:太空狗 更新时间:2023-10-29 20:05:07 24 4
gpt4 key购买 nike

当我查看不同 STL 对象和函数的标准时,对我来说没有意义的一件事是为什么容器对象的 begin() 和 end() 函数会按值而不是常量返回迭代器引用?在我看来,迭代器可以由容器对象在内部保存,并在容器发生变化时进行调整。这将减少在这样的 for 循环中创建不必要的临时对象的成本:

for (std::vector<int>::iterator it=my_vec.begin(); it!=my_vec.end(); ++it){
//do things
}

这是一个合理的担忧吗?是否有关于使用对迭代器的引用使这成为一个坏主意的事情?大多数编译器实现是否都优化了这个问题?

最佳答案

迭代器被设计为轻量级和可复制(和可赋值)。例如,对于一个 vector ,迭代器可能只是一个指针。此外,迭代器的全部意义在于将算法与容器解耦,因此容器根本不必关心其他任何人当前持有的迭代器类型

关于c++ - 为什么 C++ STL 容器开始和结束函数按值而不是常量引用返回迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15097778/

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