古詩詞大全網 - 個性簽名 - topcoder怎麽用c語言編譯,求模板!c++要用類,c用什麽?

topcoder怎麽用c語言編譯,求模板!c++要用類,c用什麽?

下面是我找的用c++編譯的 希望對妳有用

針對C程序員的TopCoder C++ :

C++是在C語言基礎上添加面向對象擴展而成。C++在提供很多傳統C語言沒有的優點的同時也保持了與C語言的兼容性,這樣人們就可以在壹個程序中同時使用C和C++。在比賽當中,您必須使用壹些基本的C++功能來解答問題。下面我們對熟悉C語言的程序員簡單介紹壹些參加比賽必須知道的C++知識。

類和方法

C++中最重要的新添加概念就是類。類可以包含方法和變量。在比賽時,您必須編寫壹個包含至少壹個方法的類。做為壹個例子,請看下面的問題定義:

類:CellTower

方法:best

參數:vector <string>, int, int

返回:int

方法簽名:int best(vector <:string> towers, int x, int y)

解答這個問題您需要創建壹個名為CellTower的類。這個類必須含有壹個名為best的方法。方法best必須有三個參數(vector<string>, int, and int)並且返回壹個整型(int)值。

類是用class關鍵字定義的。定義類和定義壹個C結構在語法結構上類似。要定義上面那個題目所要求的類,可以使用下面的代碼:

class CellTower {

public:

int best(vector<string> towers, int x, int y) {

//您的代碼

}

};

方法的定義方式和定義壹個C函數相似。關鍵字public告訴編譯器我們定義的方法任何對象都可以調用。只有這樣測試程序才能正確運行您的代碼。

STL

很多在比賽中經常被使用的類和函數都來自於標準模板庫,通常英文縮寫為STL。STL提供了壹套通用的庫,其中包含了從基本的字符處理到復雜的排序算法等各種工具。

參加比賽您必須熟悉至少兩個類:vector和string。

包含(Includes)

在您使用STL中的類之前,您必須在代碼中包含相應的頭文件。vector類來自於頭文件“vector”;string類來自於“string”。您還需要在代碼中加上如下壹行:

這行告訴編譯器到std名字空間中去尋找類。

Vector

vector是C++中用來取代C數組的。vector解決了傳統C語言數組的許多問題。vector能查詢當前數組大小以及動態調整大小。用 vector<類型> 可以聲明vector,其中類型是存儲在vector中的變量類型。比如如果您想創建壹個包含int的vector,可以使用:

vector<int> myVar;

新創建的vector大小為0。聲明壹個其它大小的vector,您可以使用:

vector<int> myVar(10);

在這個例子中新創建的vector大小為10。

要設置或者讀取vector中某壹項,您可以使用和C語言中處理數組相似的語法:

vector<int> myVar(10);

myVar[0] = 1; //設置在位置0的項為1

printf("%i", myVar[0]); //輸出1

C語言數組有壹個重大缺陷是程序運行時無法知道數組到底有多大。這給循環讀取數組中的每壹項造成了困難。如果使用vector,這個任務就變得非常容易。size()方法返回vector的當前大小:

for(int i = 0; i < myVar.size(); i++) {

printf("%i", myVar[i]); //輸出第i項

}

使用resize方法可以重新調整vector的大小:

myVar.resize(15); //myvar的大小變成了15

vector類提供了其它很多很有用的功能,點擊下面的參考鏈接了解更多關於vector的知識。

字符串(string)

string類是用來代替char*表達字符串的。string提供了基本的字符處理並且提供了壹個方法讓很多使用char*的函數仍舊可以使用string。您可以使用=和+操作符賦值給string:

string s;

s = "Hello";

s = s + ", world";

s壹開始是空字符串(大小為0)。在第二行s的值變為“Hello”。然後“, world”被添加到了s的末端,s的值變成了“Hello, world”。

方法size()返回字符串的長度。這些代碼:

string s = "Hello";

printf("%i", s.size());

將會輸出5。

您可以象訪問char數組壹樣訪問string中的某壹個字符:

string s = "Hello";

printf("%c", s[0]); //輸出 "H"

s[0] = 'h'; //s變成了"hello"

如果壹個函數要求char*參數,可以使用c_str()方法:

string s = "Hello";

printf("%s", s.c_str()); //輸出 "Hello"

解答實例

請看下面的例題:

我們的輸入程序將記錄鍵盤輸入到壹個字符序列中。我們想把輸入字符序列轉換到壹個單獨的string中以便於日後使用。創建壹個方法buildstring。這個方法接受壹個vector類型的參數。這個參數代表了鍵盤的輸入序列。buildstring方法必須返回把從這個輸入序列合並而成的string。

類: StringBuilder

方法: buildString

參數: vector <char>

返回: string

方法簽名: string buildString(vector <char> array)

如下的解答使用string和vector解決了這個問題:

#include<vector>

#include<string>

using namespace std;

class StringBuilder {

public:

string buildString(vector<char> array) {

//創建將要返回的string

string s;

//循環讀取數組中的每壹項

for(int i = 0; i < array.size(); i++) {

s = s + array[i];

}

//返回創建的string

return s;

}

};