返回信息流求助各位大神。不知道怎么就错了。
vector<int> vector_init(int length, int range)//在0~range 的范围内产生length 个数
{
vector<int>v;
while (length--)v.push_back(rand() % range);
return v;
}
vector<int>a(vector_init(8, 100));
编译过不了。如果直接遍历vector_init(8, 100)是可以遍历的。
Error 1 error C2040: 'a' : 'std::vector<int,std::allocator<_Ty>>' differs in levels of indirection from 'int [7]'
这是一条镜像帖。来源:北邮人论坛 / cpp / #89857同步于 2016/1/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
vector初始化失败问题
UC1451427216
2016/1/10镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
return vector! 还有拷贝构造函数!
bool InitVect(int length, int range, std::vector<int>* vec) {
if (NULL == vec) {
return false;
}
while (length--) {
vec->push_back((rand() * range); // rand()返回值不是[0,1]
}
return true;
}
gcc编译通过
当时也是脑抽了,为什么一定要返回vector,直接传引用进去,然后就能直接修改了。
我修改成这样就行了
void vector_init(int length, int range,vector<int> &v)
{
while (length--)v.push_back(rand() % range);
}
但是我想知道我最初的代码哪里错了,求详细解答,好像能返回vector,拷贝构造函数有啥错吗?求大神明示
【 在 sonyok17 的大作中提到: 】
: return vector! 还有拷贝构造函数!
: bool InitVect(int length, int range, std::vector<int>* vec) {
: if (NULL == vec) {
: ...................
暖洋洋大神,我用的是VS2013。真得是linux大法好吗
【 在 nuanyangyang 的大作中提到: 】
: 我这里可以直接编译通过,没问题啊。