如何为此代码编写模板
How do you write a template for this code?
本文关键字:代码 更新时间:2023-10-16
所以这是我C++,现在我得到的唯一错误是:
liux1780_9B.cpp:10:1:错误:在没有参数列表的情况下无效使用模板名称"std::vector" 矢量气泡排序(矢量); ^
liux1780_9B.cpp:在函数 'int main()' 中:
liux1780_9B.cpp:68:8:错误:"气泡排序"之前缺少模板参数 矢量气泡排序(矢量项); ^
liux1780_9B.cpp:68:8:错误:在"气泡排序"之前应为";"
liux1780_9B.cpp:在全局范围内:
liux1780_9B.cpp:76:1:错误:模板名称"std::vector"的使用无效没有参数列表 矢量气泡排序(矢量项) { ^编译失败。
这是代码:
#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#include <algorithm>
#include <vector>
using namespace std;
vector bubblesort(vector<item>);
class item
{
private:
int numItem;
string itemName;
public:
item(int numItem, string itemName)
{
this->numItem = numItem;
this->itemName = itemName;
}
int getnumItem()
{
return numItem;
}
string getitemName()
{
return itemName;
}
bool operator<(item r)
{
return this->getnumItem() < r.getnumItem();
}
};
int main()
{
string fileName;
cin >> fileName;
ifstream fin;
fin.open(fileName.c_str());
if (fin.fail())
{
cout << "Input file opening failed.n";
exit(1);
}
ofstream fout;
fout.open(fileName.c_str());
if (fout.fail())
{
cout << "Output file opening failed.n";
exit(1);
}
int count;
string name;
vector<item> list;
while (fin >> name)
{
fin >> count;
list.push_back(item(count, name));
}
vector bubblesort(vector<item>);
fin.close();
fout.close();
return 0;
}
vector bubblesort(vector<item>) {
int temp;
bool finished = false;
while (!finished) {
finished = true;
for (int i = 0; i < item.size()-1; i++) {
if (item[i] > item[i+1]) {
temp = item[i];
item[i] = item[i+1];
item[i+1] = temp;
finished=false;
}
}
}
return item;
}
首先,您需要在将其用作 vector
的模板参数之前转发声明您的 item
类。
class item;
然后你需要确保返回vector
也有一个类型
vector<item> bubblesort(vector<item>);
同样在你的函数本身中,你需要给参数变量一个名字并使用该变量
vector<item> bubblesort(vector<item> items)
{
\ do stuff with items
}
您还应该考虑将初始向量作为const
引用传递以避免复制,因为无论如何您都会返回一个新向量。或者传入对向量的非const
引用并就地修改它。
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 我的字符计数代码计算错误.为什么
- 孤立代码块在结构中引发异常
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 此代码是否违反一个定义规则
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 使用动态分配的数组会导致代码分析发出虚假的C6386缓冲区溢出警告
- 为什么在这个代码结束循环中没有得到结束
- 在c代码之间共享数据的最佳方式
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值