看板 C_and_CPP 關於我們 聯絡資訊
#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
legnaleurc:型別推導機制的運作而己,和typeid無關 10/20 12:58
legnaleurc:typeid 能派上用場的地方實在很少 ... 10/20 13:00
holymars:這是因為重載函式議決規則.. 10/20 13:22
holymars:第二個assign比較匹配你的函式呼叫,所以它被invoke 10/20 13:22
holymars:注意這件事(重載議決) 是Compile time就決定的 10/20 13:23
holymars:你說的那個typeid是run time才決定的 10/20 13:23
※ 編輯: jlovet 來自: 140.123.102.254 (10/20 13:58)