我有一个类(对象),User.该用户有2个私有属性,"名称"和"受欢迎程度".我将对象存储到向量(容器)中.
从容器中,我需要找到前5位最受欢迎的用户,我该怎么做?(我有一个丑陋的代码,我会在这里发布,如果你有更好的方法,请告诉我.如果你认为矢量不是一个好的选择,请随意使用其他容器,但请仅使用:map或multimap,列表,向量或数组,因为我只知道如何使用它们.)我目前的代码是:
int top5 = 0, top4 = 0, top3 = 0, top2 = 0, top1 = 0;
vector<User>::iterator it;
for (it = user.begin(); it != user.end(); ++it)
{
if( it->getPopularity() > top5){
if(it->getPopularity() > top4){
if(it->getPopularity() > top3){
if(it->getPopularity() > top2){
if(it->getPopularity() > top1){
top1 = it->getPopularity();
continue;
} else {
top2 = it->getPopularity();
continue;
}
} else {
top3 = it->getPopularity();
continue;
}
}
} else {
top4 = it->getPopularity();
continue;
}
} else {
top5 = it->getPopularity(); …Run Code Online (Sandbox Code Playgroud) 我很迷惑.我不知道应该使用哪些容器.我先告诉你我需要什么.基本上我需要一个可以存储X个Object的容器(并且对象的数量是未知的,它可能是1到50k).
我读了很多,在这里数组vs列表它说:如果对象的数量未知(我不知道如何在C++中调整数组的大小),数组需要调整大小,并且它还声明如果使用链表,如果你想搜索某个项目,它将从第一个到第二个循环(迭代)(反之亦然),而数组可以指定"索引处的数组对象".
然后我去了另一个解决方案,地图,矢量等.像这一个:数组与矢量.一些响应者说从不使用数组.
我是C++的新手,我之前只使用过数组,向量,列表和地图.现在,就我的情况而言,你建议我使用什么样的容器?让我重新说一下我的要求: