2016-03-04 77 views
1

所以我有一個向量模板類,看起來像這樣:unsigned int的載體C++

#ifndef Vector_H 
#define Vector_h 

#include <iostream> 
#include <assert.h> 

using namespace std; 

template <class T> 
class Vector 
{ 

public: 
//constructor anddestructor 
    Vector(unsigned int numberOfElements); 
    virtual ~Vector(); 

    //overloading the [] operator 
    T & operator [] (unsigned int index) const; 

    //length 
    unsigned int length() const; 

private: 
    T *  data; //the elements in the vector 
    unsigned int size; 

}; 

在另一類,我使用的模板類和創建載體。我想從.csv文件中讀取行並將行(即客戶名稱,ID,年齡和性別)分解並將其放入向量中。

我需要在我的模板類中添加一個add函數來向向量中添加值嗎?我是否全部錯了?謝謝你的幫助。

+0

是的,你需要一個功能。 – molbdnilo

+2

是的,你可以。但是有沒有什麼好的理由來重新發明車輪? (除非用於研究目的) –

+1

您的矢量應該支持可變長度嗎?如果不是,你的'operator []'返回一個引用,並且可以用它們來修改這些元素。如果它支持可變長度,你仍然可以通過它來增加底層數組的大小,但它會更復雜一些。 – Anedar

回答

1

如果您知道要添加到向量中的元素數量,那麼您的用例不需要這些元素。您可以使用該大小初始化矢量,然後使用運算符[]修改內容。但類似push_back的功能將非常有用。

我對這一切都錯了嗎?

假設這是爲了學習的目的不是真的。如果不是,請使用std::vector<T>

+0

我不想使用std :: vector,因爲這太容易了,並且想要學習如何使用模板類。此外,我將以假設程序不知道將要添加到其中的元素的數量的角度來進行。 – user3452963

+0

在這種情況下,如果使用C++ 11,應該添加一個'add(const T&value)'函數(和'add(T && value)')。 –

+0

好的。我還需要一個函數來擴展我的向量,當它滿了嗎? – user3452963