64,648
社区成员
发帖
与我相关
我的任务
分享
ublas::vector<int> a(3,0);
std::vector<in> b(a.begin(),a.end());
std::vector<in> a(3,0);
ublas::vector<int,std::vector<int> > b(a);
int a[]={1,2,3,4,5};
std::vector<int> b(a,a+5);
int a[]={1,2,3,4,5};
ublas::vector<int,std::vector<int> > b(std::vector<int>(a,a+5));
template<class AE>
vector (const vector_expression<AE> &ae)
int a[]={1,2,3,4,5};
std::vector<int> b={a,a+5};
同样可以将数组a中的五个数都赋值给b,也就是说,像下面这种写法:
int a={1,2,3,4,5};
ublas::vector<int,std::vector<int> > b({a,a+5});
ublas::vector<int,std::vector<int> > c(std::vector<int>(a,a+5));
对于b和c的初始化方式应该是等价的。其实我现在很想知道的是,这种初始化方式和先分配大小再赋值的效率哪个更高些:
int a={1,2,3,4,5};
ublas::vector<int,std::vector<int> > b({a,a+5});
ublas::vector<int,std::vector<int> > c(5);
std::copy(a,a+5,c.begin());
int a={1,2,3,4,5};
ublas::vector<int,std::vector<int> > b({a,a+5});
cout<<b<<endl;
用gcc4.7编译(编译的时候还要加上-std=c++11)成功,输出结果:
[5](1,2,3,4,5)
输出的是5维的数组,证明确实是可行的。说实话的我也是第一次才知道统一初始化列表还可以这么用,试了才知道确实可以的。而且初始化列表还必须放在括号中,如果这样写:
int a={1,2,3,4,5};
ublas::vector<int,std::vector<int> > b={a,a+5};
编译是不会通过的,不知道这是什么原理。
double a[]={1,2,3,4,5};
ublas::vector<double,std::vector<double> > b({a,a+5});
试了一下果然可以!实在是太感谢您了!numeric::ublas::vector<int> vec({1,2,3,4,5});
int a[]={1,2,3,4,5};
ublas::vector<int> b={a,a+5};
貌似不行啊。请前辈指教一下该怎么写,多谢了!