gpt4 book ai didi

c++ - 从指针集合中快速检索特定对象

转载 作者:行者123 更新时间:2023-11-28 03:49:48 24 4
gpt4 key购买 nike

我正在尝试想出以最高效的方式从容器( map 、 vector 等)访问/检索对象的技术。

所以如果我有对象:

class Person
{
public:
string name;
unsigned int ID; // unique ID
double deposit;
};

// And then I have a vector of pointers to person objects
std::vector <Person*> people;

Person* getPerson( string nName );
Person* getPerson( unsigned int nID ); // what would be a good method to quickly identify/retrieve the correct Person object from my vector?

我的想法:

这是效率不高的迭代解决方案:

Person* getPerson( string nName )
{
for (int i=0; i<people.size(); i++)
{
if (people[i]->name == nName ) { return people[i]; }
}
}

另一种方式:有2张 map

map <string, Person*> personNameMap;  

Person* getPerson( string nName )
{
return personNameMap[nName];
}

map <string, Person*> personIDMap;
Person* getPerson( unsigned int nID )
{
char id[2];
atoi( nID, id, 10 ); // or is it itoa?
return personNameMap[id];
}

关于如何以快速高效的方式从集合中存储和检索我的对象的任何其他想法?

最佳答案

std::map将其元素存储在平衡的树结构中,并提供相当快的查找速度。但是插入 std::map出于同样的原因,它比顺序容器慢。所以map如果您有很多关闭查找和相当少量的插入,这是您的选择。

除此之外,我不明白你为什么要制作 map <string, Person*> personIDMap;而不是 map <unsigned int, Person*> personIdMap .

关于c++ - 从指针集合中快速检索特定对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5896670/

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