[問題] std::vector assign

看板C_and_CPP (C/C++)作者 (打不贏怪兵器不好)時間16年前 (2009/10/20 12:26), 編輯推噓2(204)
留言6則, 2人參與, 最新討論串1/1
#include <vector> void assign( size_type num, const TYPE& val ); void assign( input_iterator start, input_iterator end ); 第一種 v.assign( 10, 42 ); 會出現 42 42 42 42 42 42 42 42 42 42 十個 第二種 std::vector<int> vector; int array[ ] = { 1, 2, 3 }; vector.assign( array, array + 3 ); for(int i=0;i<3;i++){ printf("%d\n",vector[i]); } printf("%u %u\n",array,array+3); 會出現 1 2 3 問題是, array=3216551792 什麼不會被當成 3216551792 個 array+3 東東呢? 打到這邊想到了,自問自答 printf("%s\n",typeid(array).name()); A3_i 他"可以"看typeid是什麼來決定怎麼做 不過他不是這麼做的.... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.102.254

10/20 12:58, , 1F
型別推導機制的運作而己,和typeid無關
10/20 12:58, 1F

10/20 13:00, , 2F
typeid 能派上用場的地方實在很少 ...
10/20 13:00, 2F

10/20 13:22, , 3F
這是因為重載函式議決規則..
10/20 13:22, 3F

10/20 13:22, , 4F
第二個assign比較匹配你的函式呼叫,所以它被invoke
10/20 13:22, 4F

10/20 13:23, , 5F
注意這件事(重載議決) 是Compile time就決定的
10/20 13:23, 5F

10/20 13:23, , 6F
你說的那個typeid是run time才決定的
10/20 13:23, 6F
※ 編輯: jlovet 來自: 140.123.102.254 (10/20 13:58)
文章代碼(AID): #1AtJmB4- (C_and_CPP)
文章代碼(AID): #1AtJmB4- (C_and_CPP)