2012-10-07 45 views
-1

由於我大部分時間都在使用數組,因此我想創建一個使用向量執行插入,刪除,搜索和其他操作的類。在C++中創建一個通用實用類

arrOperation obj = new arrOperation(); 
obj.insert(arr,val); 

如上圖所示,我創建用於其中我寫爲插入,刪除和其他操作的代碼的一般工具類的對象。我的問題是,編寫這樣一個類並使用其中的函數是否好,或者在同一類中插入,刪除函數是否好?我需要一些關於我可以製作代碼的區域的一些想法,並且可以在我需要時重複使用

+4

沒有違法意圖,但我真的看不到那個階級的觀點。它帶來了什麼?例如,'obj.insert(vec,val)'比'vec.push_back(val)'更好嗎? – qdii

+0

我已經更新了代碼,希望這意味着現在的東西 – srinath

+2

鑑於你的示例代碼完全無償地包含'new',我將假裝出去,並假設你最近來自一個非常不同的編程背景,因此我會說「不,不要做那樣的事情」。相反,習慣於應該已經涵蓋你的需求的C++習語。 –

回答

4

聽起來像你想要的是std::vector類。追加將是push_back(val),insertinsert,而removeerase

+0

是的,對不起。我真的搞砸了。我在想陣列和我張貼的載體。 – srinath

2

當你在你的問題中說「vector」時,你似乎正在談論一個內置數組。如果是這樣的話,請看看std::vector<T>,這幾乎可以做你正在尋找的東西。

如果您正在討論打包某些在std::vector<T>中未提供的操作,那麼您應該考慮將它們應用於合適順序的「算法」。例如,std::vector<T>沒有用於對其元素進行排序的方法,但有一種算法std::sort(),它可以對任何隨機訪問序列進行排序,例如std::vector<T>(只要存在針對類型T定義的嚴格的弱順序,當然)。

0

如果您想用Java編程,請使用Java。 在堆上創建對象以向其他對象提供函數並不是C++的意思。

您可以使用自由函數,在現有類型上編寫頻繁的操作。

如果您需要動態內存,則可以使用標準庫類。

提供操作的類僅適用於不允許自由函數存在的語言。

+0

這個答案應該提及命名空間和靜態成員函數? –

+0

是的......但他們不添加「功能」:只是「組織」。命名空間函數和靜態成員都像自由函數一樣起作用:它們不綁定任何對象(並且在它們的主體中沒有看到任何「this」)。我的觀點是要證明,功能可以獨立於「載體對象」而存在 –