總時間限制:
1000ms
記憶體限制:
65536kb
描述編寫 myany類以及,myany_cast模版(可能多個),使得程式按要求輸出
要求myany類必須要有析構函式,在析構函式以及其他適當的地方(比如複製建構函式,過載的賦值號)要釋放動態分配的空間,不能造成記憶體碎片。
#include #include #include #include using namespace std;
class myclass
void f()
};
// 在此處補充你的**
int main()
}
輸入多組資料,每組一行,為乙個整數n和乙個無空格字串s。輸出對每組資料,輸出以下內容 n
sn+1 func.
n+3 func.
n+3 func.
n+3 func.
soknot a int
the string is sok
n,n+1,n+3都用具體的數值替換
s用讀入的字串替代樣例輸入
5 good樣例輸出6 hello
0 0
5提示1. 可以參考 boost的 any的**good
6 func.
8 func.
8 func.
8 func.
goodok
not a int
the string is goodok
6hello
7 func.
9 func.
9 func.
9 func.
hellook
not a int
the string is hellook
2. myany_cast 模板可以寫兩個
3. 可以為myany類 寫乙個 模板的 operator =
4. 使用 type_info,typeid進行型別方面的判斷。注意type_info 的複製建構函式是私有的,
5. typeid(x)返回乙個 type_info物件的引用,裡面描述了 x的型別資訊。
可以用 typeid(a) == typeid(b)判斷a 和b的型別是否一致
這道題是自己寫乙個類似boost中any的函式,這種動態型別是c++不支援,但很多其他的語言都支援的一種用法。很有意思的一道題。思路是用內部類的繼承和多型來實現,myany類中只有乙個指向base類的指標,這個指標可以指向各種不同的derive類,derive類是乙個模板類,隨引數動態的變化,每次要使用有特徵的函式就利用多型機制去實現即可。**如下:
#include #include #include #include using namespace std;
class myclass
void f()
};// 在此處補充你的**
class myany
virtual ~base(){};
virtual base *getcopy() = 0;
};templateclass derived:public base
virtual ~derived(){}
virtual base *getcopy()
};base *content;
templatemyany(const t a): content(new derived(a)){}
myany(): content(null){}
myany(const myany &a)
~myany()
myany& operator=(const myany &a)
};templatet myany_cast(myany &a)
templatet *myany_cast(myany *a)
}int main()
}
程設十三周
問題描述 這一天,tt 遇到了乙個神秘人。神秘人給了兩個數字,分別表示 n 和 k,並要求 tt 給出 k 個奇偶性相同的正整數,使得其和等於 n。例如 n 10,k 3,答案可以為 4 2 4 tt 覺得這個任務太簡單了,不願意做,你能幫他完成嗎?本題是spj input 第一行乙個整數 t,表示...
2016程設期末偽題解
期末發揮實在是太差了 比2015年少了好多送分題,整體難度顯得很大,但是考完之後靜下來做又覺得並不是很難orz 1.籃球聯賽 暴力列舉 我用的 dfs 來列舉 2.奪寶探險 暴力 dfs 3.尋找邊緣 從邊緣暴力 dfs 4.猴子摘桃 可以直接用兩個指標指向區間端點做到 o n 5.分形盒 直接遞迴...
2018程設模考2
a 分別記錄紙幣剩餘數量判斷是否能找零,因為資料比較弱所以對於5 5 5的情況沒考慮也過了。includeusing namespace std int main else else else if flag printf true return 0 b 因為一次只能搬一塊或者兩塊磚頭,所以對於n塊...