【发布时间】:2014-05-15 02:31:21
【问题描述】:
我正在处理一项任务,我需要使用模板对向量进行排序,以便我可以将不同的数据类型传递给我的类,并且不使用 std::sort 对它们进行排序。所以到目前为止我很困, 我真的不知道如何使用模板来接受来自 main() 的输入。 PS。这是为了作业,这就是为什么我不使用数组和排序函数。
这是我目前的代码。
using namespace std;
template <class T>
class SortableVector
{
private:
T a =0;
public:
SortableVector(); // constructor
~SortableVector(); // destructor
void bubble_sort(vector<T>, a)
{
for (int i = a.size(); i > 0;i--)
{
for (int j = 0, k = 1; k < i;j++, k++)
{
if (a[j] > a[k])
{
int swap = a[j];
a[j] = a[k];
a[k] = swap;
}
}
}
}
};
我的主要是这样的:
int main()
{
int alen, val;
vector<int> a;
cout << "Enter the number of elements : ";
cin >> alen;
for(int i = 0; i < alen; i++)
{
cin >> val;
a.push_back(val);
}
SortableVector::bubble_sort(a);
cout << "List of sorted elements: " << endl;
for(int i = 0; i < alen; i++)
{
cout << a[i] << " ";
}
cout << endl;
}
欢迎任何帮助:)
好的... 多亏了 Namfuak,我做了一些改变
现在我有一个完全不同的问题
命令行输出;
Hw8_3.cpp:(.text+0x11): 未定义引用SortableVector<int>::SortableVector()'
Hw8_3.cpp:(.text+0x138): undefined reference toSortableVector::~SortableVector()'
Hw8_3.cpp:(.text+0x170): 未定义引用 `SortableVector::~SortableVector()'
collect2:错误:ld 返回 1 个退出状态
我真的没有得到这个。这是我到目前为止的代码;
template <class T>
class SortableVector
{
private:
vector<T> vec;
public:
SortableVector(); // constructor
~SortableVector(); // destructor
void push_back(T push) {vec.push_back(push);}
T bubble_sort(vector<T> a);
};
template <class T>
T SortableVector<T>::bubble_sort(vector<T> a)
{
for (int i = a.size(); i > 0;i--)
{
for (int j = 0, k = 1; k < i;j++, k++)
{
if (a[j] > a[k])
{
T swap = vec[j];
vec[j] = vec[k];
vec[k] = swap;
}
}
}return 0;
}
还有我的 main() ;
{
SortableVector<int> L;
int alen, val;
vector<int> a;
cout << "Enter the number of elements : ";
cin >> alen;
for(int i = 0; i < alen; i++)
{
cin >> val;
L.push_back(val);
}
L.SortableVector<int>::bubble_sort(a);
cout << "List of sorted elements: " << endl;
for(int i = 0; i < alen; i++)
{
cout << a[i] << " ";
}
}
还有其他想法吗?我真的迷路了……
【问题讨论】:
标签: c++ vector bubble-sort