【发布时间】:2015-04-18 17:02:28
【问题描述】:
我想知道这两种方法哪个更快:
方法一:类结构:
//The Struct
struct element
{
Element* elementPtr;
uint map;
std::string name;
Vector3 pos;
long type;
}
//Type of container
std::vector<element> elementVctr;
//Finding method
for(uint ix = 0, ix < elementVctr.size(); ix++)
{
if(elementVctr[ix].name == "nameToFind")
{
return elementVctr[ix].name;
break;
}
}
方法二:矢量类:
std::vector<std::vector<std::string>> elementVctr;
//Every element is this elementVctr[x], and its properties elementVctr[x][y]
//Finding Method
for(uint ix = 0, ix < elementVctr.size(); ix++)
{
if(elementVctr[ix][4] == "nameToFind")
{
return elementVctr[ix][4];
break;
}
}
我一直在使用vectorLike,因为这是我知道的唯一方式,但现在我已经学会了如何使用结构,我认为它们应该比我的vector方式更快。
另一个问题是,是否有任何其他方式比我的查找方式执行得更快,可以查看向量内部并检查它是否是我正在查找的内容?
感谢您的回答,那么您认为使用向量的向量和使用迭代应该执行更快的响应时间?
【问题讨论】:
-
分析一下你就知道了。
-
如果你想要速度,别忘了使用vector iterators。它们比具有索引访问的常规 for 循环快得多。
-
你看错东西了。使用结构是为了清晰,而不是为了性能。在性能方面,两种方式都可能更快;哪个更快完全取决于你的访问模式,所以只能通过测量来发现。
-
试试这个:ideone.com/dEKdFm 没有手写循环,没有调用
size(),没有后增量(而不是前增量)。刚才提到的所有事情都可能使您的循环(您发布的任何一个)比链接上的方法慢。
标签: c++ performance vector struct