使用迭代器通过比较对向量进行排序
Using an iterator to sort a vector by comparison
我创建了一个名为相册的类的向量,当我向向量中添加新相册时,我首先尝试将相册标题与向量的第一个索引进行比较,并按字母顺序排序。这是我的代码:
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);
这样,即使元素大于最后一个元素,也会插入该元素。请注意,使用此逻辑,您不需要检查向量是否为空,因此代码更简单。
相关文章:
- 将结构向量排序为子组
- C++数组与向量排序(在我的情况下,向量比数组慢~2.5倍(无优化))
- 如何在对向量排序后更改索引值?c++
- C++向量排序给出0作为输出
- 将许多向量排序在一起
- 根据一个向量对多个向量排序
- 编译错误向量排序和联合
- C++我自己的函数进行向量排序
- 将字符串的向量排序为日期"yyyymmdd"
- C++ 通过使用旧向量进行预排序来改进向量排序
- C 向量排序 .h .cpp中的单独文件
- 向量排序-c++
- 将向量排序到一个无序映射c++11中
- 向量的向量排序
- c++向量排序方法编译失败,返回预期表达式
- 如何对bitset向量排序
- 向量排序的基础上只有先
- 我如何以相同的方式对两个向量排序,而条件只使用其中一个向量
- 列表排序和结构体向量排序之间的性能差距.c++
- 如何基于第二个字符串对字符串向量的向量排序