我正在开发一个程序,它接受用户的元素并对它们进行排序.对于这个程序,我必须使用向量,因为在用户输入之前元素列表的大小是未知的.我们的指示是:
用C++编写程序来实现元素列表的排序.元素可以是任何类型,但都可以是相同类型,如所有整数或所有浮点数或所有字符或所有字符串(字符串应按字典排序).您可以实现您选择的任何排序算法.
- 询问用户将有多少元素
- 要求用户输入元素
- 要求用户选择排序顺序:升序或降序或两者
- 打印输入和输出列表
- 用户不会提供有关元素类型的任何信息
我对矢量不太熟悉(老师基本上在课堂上略读主题)而且我的书并没有给我很多关于这个主题的信息.我遇到的问题是,在用户开始输入之前,我不知道元素列表的类型.到目前为止,我尝试过:
insertInVector通过将第一个元素发送到函数并让函数根据第一个元素的类型确定要创建哪个向量类型来重载调用的函数(当我想到它时,这似乎是我最好的选择,除了我需要访问向量在函数终止之后,所以最终也是一个不行的)#include <typeinfo>在程序中,找到第一个元素的类型,然后创建一个矢量使用vector<typeid(firstElement).name()>,老实说,我不知道为什么这不起作用,但事实并非如此.就像我说的那样,我对矢量的经验非常有限,因为这是我第一次使用它们.我也是一个相当新的程序员,所以我在这方面所做的很多研究都已经过去了.任何可以提供的帮助都将非常感激!
我正在尝试使用矢量迭代器打印出矢量中的所有元素.我查了类似的问题,但发布的解决方案似乎对我不起作用.这是代码:
void printPerms()
{
for(vector<process>::iterator it = allProcesses.begin(); it != allProcesses.end(); it++)
{
for(int i = 0; i < numResourceTypes; i++)
{
cout << (static_cast<process*>(*it).need) << (static_cast<process>(*it)).allocated <<endl;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误,我不知道如何修复:
error C2440: 'static_cast' : cannot convert from 'process' to 'process *' No user
defined-conversion operator available that can perform this conversion, or the operator
cannot be called
error C2228: left of '.need' must have class/struct/union
Run Code Online (Sandbox Code Playgroud)