作者jlovet (打不贏怪兵器不好)
看板C_and_CPP
標題[問題] std::vector assign
時間Tue Oct 20 12:26:48 2009
#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)