首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用vector::iterator或at()迭代STL向量,哪个更快?

使用vector::iterator或at()迭代STL向量,哪个更快?
EN

Stack Overflow用户
提问于 2009-04-22 10:55:05
回答 11查看 75.5K关注 0票数 61

在性能方面,什么会更快?有什么不同吗?它依赖于平台吗?

代码语言:javascript
复制
//1. Using vector<string>::iterator:
vector<string> vs = GetVector();

for(vector<string>::iterator it = vs.begin(); it != vs.end(); ++it)
{
   *it = "Am I faster?";
}

//2. Using size_t index:
for(size_t i = 0; i < vs.size(); ++i)
{
   //One option:
   vs.at(i) = "Am I faster?";
   //Another option:
   vs[i] = "Am I faster?";
}
EN

Stack Overflow用户

发布于 2009-04-22 11:34:57

如果您使用的是VisualStudio 2005或2008,为了从向量中获得最佳性能,您需要定义_SECURE_SCL=0

默认情况下,_SECURE_SCL是开的,这会使遍历容器的速度明显变慢。也就是说,在调试版本中将其保留为打开状态,将使跟踪任何错误变得更加容易。需要注意的是,由于宏会更改迭代器和容器的大小,因此您必须在共享stl容器的所有编译单元中保持一致。

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

https://stackoverflow.com/questions/776624

复制
相关文章

相似问题

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