如何修改函数以按C++的排序顺序插入每个项目
How do I modify functions to insert each item in sorted order in C++
我正在学习向量,但一直困扰着这个问题。这是一个练习题,我没有得到回答的荣誉。这是一个在线课程,没有提供太多帮助,只对最终项目进行评分。非常感谢解释!
修改 numsInsert 函数以按排序顺序插入每个项目。新程序应输出:4 19 55 250
#include <iostream>
#include <vector>
using namespace std;
void numsInsert(vector<int>& numsList, int newNum) {
unsigned int i = 0;
for (i = 0; i < numsList.size(); ++i) {
if (newNum < numsList.at(i)) {
// FIXME: insert newNum at element i
break; // Exits the for loop
}
}
// FIXME: change so executes if higher number NOT found
// Change "true" to "i == ??" (determine what ?? should be)
if (true) { // No higher number was found, so append to end
numsList.push_back(newNum);
}
return;
}
void numsPrint(const vector<int>& numsList) {
unsigned int i = 0;
for (i = 0; i < numsList.size(); ++i) {
cout << " " << numsList.at(i) << endl;
}
return;
}
int main() {
vector<int> numsList;
numsInsert(numsList, 55);
numsInsert(numsList, 4);
numsInsert(numsList, 250);
numsInsert(numsList, 19);
numsPrint (numsList);
return 0;
}
对于第一个FIXME
,放置以下代码:
numList.insert(numList.begin() + i, newNum);
这insert
在参数newNum
numList
的第 i
个位置。 numList.begin()
将迭代器返回到numList
的开头,+ i
将其向前调整i
位置(insert()
的第一个参数是迭代器(。
对于第二个FIXME
,将if
条件替换为:
if (i == numList.size()) { //...
如果没有找到更大的数字,i
将==
向量numList
的大小(因为这是前一个循环的隐式停止条件(。
作为参考,您可以在此链接中看到矢量 API。这就是我为了创建这个答案而提到的。
相关文章:
- 在自定义程序中使用本机 Windows 自然顺序排序
- C++ 按数值对元组<字符串、浮点数>然后按字典顺序排序的向量
- 在 C++ 中,以相反顺序排序的最快方法是什么?
- 按字母顺序排序字符数组,然后按长度排序
- 按第一个值的递减顺序对一组对进行排序,然后按第二个值的字母顺序排序
- C 在向量的向量中按字母顺序排序字符串
- 双链表中按字母顺序排序的链接
- 从文件中读取并按字母顺序排序
- 按字母顺序排序阵列C
- 构造函数的初始值设定项列表中的函数调用是否按顺序排序?
- 使用指针数组按字母顺序排序
- 按字母顺序排序,带有 å ä ö
- 按字母顺序排序名称,数组错误
- 如何从对数字进行排序到按C++字母顺序排序
- 从文件C++中按字母顺序排序
- 无法实现从文件按字符串 C++ 中的字母顺序排序的函数
- 并发消息处理按时间顺序排序
- 如何在 std::vector 中查找重复项<strings>并返回一个 std::list 它们按字母顺序排序,在该结果列表中没有重复项
- C++按字母顺序排序字符串
- 按字母顺序排序JSON值