我该如何使用头文件?

时间:2018-09-26 00:57:39

标签: c++ header g++

我有一个非常简单的项目。文件main.cpp创建一个浮点向量,对其进行排序,然后将其打印。

我用以下命令编译它:

g++ main.cpp quickSort.cpp

如果在main.cpp中,我更改了

#include "quickSort.h"

#include "quickSort.cpp"

它工作正常。

如何更改此项目,使其与头文件一起使用?

main.cpp

#include <iostream>
#include <random>
#include <vector>
#include "quickSort.h"

#define MODULO 200
#define SIZE 1500

int main(){
    std::vector<float> data;
    for(int i=0;i<SIZE;i++)
        data.push_back(rand()%MODULO);

    data=quickSort(data);

    for(int i=0;i<data.size();i++){
        std::cout<<data[i]<<',';
    }
    std::cout<<'\n';
    return 0;
}

quickSort.cpp

#include <vector>

template<typename T>

std::vector<T> quickSort(std::vector<T> data){

    if(data.size()==0)return data;
    int pivot=data[data.size()/2];

    std::vector<T> a;
    std::vector<T> b;
    std::vector<T> c;
    std::vector<T> ret;

    for(int i=0;i<data.size();i++){
        if(data[i]<pivot)a.push_back(data[i]);
        if(data[i]==pivot)b.push_back(data[i]);
        if(data[i]>pivot)c.push_back(data[i]);
    }

    a=quickSort(a);
    c=quickSort(c);

    for(int i=0;i<a.size();i++)ret.push_back(a[i]);
    for(int i=0;i<b.size();i++)ret.push_back(b[i]);
    for(int i=0;i<c.size();i++)ret.push_back(c[i]);

    return ret;
}

quickSort.h

#include <vector>
template<typename T>

std::vector<T> quickSort(std::vector<T> data);

0 个答案:

没有答案