gpt4 book ai didi

c++ - 使用迭代器通过比较对 vector 进行排序

转载 作者:行者123 更新时间:2023-11-28 00:10:01 30 4
gpt4 key购买 nike

我创建了一个名为专辑的类的 vector ,当我向 vector 添加新专辑时,我首先尝试将专辑标题与 vector 的第一个索引进行比较,并按字母顺序对其进行排序。这是我的代码:

vector<album> cd;                //declared in main

void add_cd_vector(vector<album>& cd)
{
string name;
int barcode;


cout << "Enter the album name: ";
cin >> name;
cout << "Enter the barcode: ";
cin >> barcode;
album newCD(name, barcode); //constructor function for class

if(cd.size() == 0) //no vector created yet
{
cd.push_back(newcd);
}
else{
vector<album>::iterator it;
for(it = cd.begin(); it!=cd.end(); it++)
{
if(name < it.get_name()) //getter function for name in class
{
cd.insert(it, newCD); //should insert into the vector
}
}
}

我的问题要么出在我的 if 语句中,要么出在其中的命令中,我不确定语法是否正确。

最佳答案

我认为您想将插入逻辑更改为:

for(it = cd.begin(); it!=cd.end(); it++)
{
if (name < it->get_name())
{
break;
}
}
cd.insert(it, newCD);

这样,即使元素大于最后一个元素,它也会被插入。请注意,使用此逻辑,您无需检查 vector 是否为空,因此代码更简单。

关于c++ - 使用迭代器通过比较对 vector 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33643386/

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