作者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
1F:推 legnaleurc:型别推导机制的运作而己,和typeid无关 10/20 12:58
2F:→ legnaleurc:typeid 能派上用场的地方实在很少 ... 10/20 13:00
3F:推 holymars:这是因为重载函式议决规则.. 10/20 13:22
4F:→ holymars:第二个assign比较匹配你的函式呼叫,所以它被invoke 10/20 13:22
5F:→ holymars:注意这件事(重载议决) 是Compile time就决定的 10/20 13:23
6F:→ holymars:你说的那个typeid是run time才决定的 10/20 13:23
※ 编辑: jlovet 来自: 140.123.102.254 (10/20 13:58)