typedef double seed[3];
seed s[5] = { {0,0,0},{1,1,1},{2,2,2},{3,3,3},{4,4,4} };
std::vector<seed> vec;
for(int i=0;i<5;i++)
{
vec.push_back(s[i]);//提示这儿有错
}
... ...
错误提示很奇怪,小弟从没见过:e:\program files\microsoft visual studio\vc98\include\xutility(39) : error C2440: '=' : cannot convert from 'const double [3]' to 'double [3]'
There is no context in which this conversion is possible
e:\program files\microsoft visual studio\vc98\include\vector(170) : see reference to function template instantiation 'void __cdecl std::fill(double (*)[3],double (*)[3],const double (&)[3])' being compiled
e:\program files\microsoft visual studio\vc98\include\xutility(25) : error C2106: '=' : left operand must be l-value
e:\program files\microsoft visual studio\vc98\include\vector(174) : see reference to function template instantiation 'double (*__cdecl std::copy_backward(double (*)[3],double (*)[3],double (*)[3]))[3]' being compiled
e:\program files\microsoft visual studio\vc98\include\xmemory(34) : error C2538: new : cannot specify initializer for arrays
e:\program files\microsoft visual studio\vc98\include\xmemory(66) : see reference to function template instantiation 'void __cdecl std::_Construct(double (*)[3],const double (&)[3])' being compiled
Error executing cl.exe.
希望能得到高手的指导,上述向量应该怎么赋值?多谢!!!
13 个解决方案
#1
std::vector<seed> vec;
应改为:
std::vector<double> vec;
应改为:
std::vector<double> vec;
#2
sorry,没看仔细,以上说的不对.
#3
typedef double seed[3];
.......
std::vector<seed> vec;
-------------------------------------------------------------------------------------
楼主要干什么?你见过两个数组相互直接赋值的么?
.......
std::vector<seed> vec;
-------------------------------------------------------------------------------------
楼主要干什么?你见过两个数组相互直接赋值的么?
#4
typedef double seed[3];
seed s[5] = { {0,0,0},{1,1,1},{2,2,2},{3,3,3},{4,4,4} };
std::vector<seed> vec;
for(int i=0;i<5;i++)
{
vec.push_back(s[i]);//提示这儿有错
}
--------------
个人觉得用结构体为vector中的元素比较好点.
struct seed
{
double dd1;
double dd2;
double dd3;
};
std::vector<seed> vec;
for(int i=0;i<5;i++)
{
seed s;
s.dd1 = i;
s.dd2 = i;
s.dd3 = i;
vec.push_back(s);//
}
seed s[5] = { {0,0,0},{1,1,1},{2,2,2},{3,3,3},{4,4,4} };
std::vector<seed> vec;
for(int i=0;i<5;i++)
{
vec.push_back(s[i]);//提示这儿有错
}
--------------
个人觉得用结构体为vector中的元素比较好点.
struct seed
{
double dd1;
double dd2;
double dd3;
};
std::vector<seed> vec;
for(int i=0;i<5;i++)
{
seed s;
s.dd1 = i;
s.dd2 = i;
s.dd3 = i;
vec.push_back(s);//
}
#5
double a[3];
double b[3];
a = b;
楼主,你看看这样的赋值(此处应该叫“初始化”,反正都非法,叫什么无所谓了)可以么?
double b[3];
a = b;
楼主,你看看这样的赋值(此处应该叫“初始化”,反正都非法,叫什么无所谓了)可以么?
#6
了解,结构体可以直接push_back,那如果就按我的定义该如何赋值呢?
#7
用两个vector也可以实现吧
typedef std::vector<int> seed;
int main()
{
std::vector<seed> vec;
for(int i=0;i<5;i++)
{
seed tmp;
tmp.push_back(i);
tmp.push_back(i);
tmp.push_back(i);
vec.push_back(tmp);
}
}
push_back的原型是void vector::push_back(const _TYPE& _X),参数是引用类型,所以数组是不可以的
typedef std::vector<int> seed;
int main()
{
std::vector<seed> vec;
for(int i=0;i<5;i++)
{
seed tmp;
tmp.push_back(i);
tmp.push_back(i);
tmp.push_back(i);
vec.push_back(tmp);
}
}
push_back的原型是void vector::push_back(const _TYPE& _X),参数是引用类型,所以数组是不可以的
#8
struct seed {
double v[3];
seed ();
seed (const seed&);
seed &operator= (const seed&);
};
double v[3];
seed ();
seed (const seed&);
seed &operator= (const seed&);
};
#9
突然想到
可不可以
struct seed{ double v[3] };
数值不能赋值,这样包装一下不知道可不可以呢?
没编译器,大家帮忙看看.
可不可以
struct seed{ double v[3] };
数值不能赋值,这样包装一下不知道可不可以呢?
没编译器,大家帮忙看看.
#10
这种情况下该怎么给seed赋值呢?
seed s;
s.v={0,0,0}; //编译不通过
s.v[3]={0,0,0}; //编译也不通过
seed s;
s.v={0,0,0}; //编译不通过
s.v[3]={0,0,0}; //编译也不通过
#11
sorry,突然迷糊了,问了个弱智的问题
#12
用struct包装一下是可以的
#13
谢谢各位,给分喽~~~
#1
std::vector<seed> vec;
应改为:
std::vector<double> vec;
应改为:
std::vector<double> vec;
#2
sorry,没看仔细,以上说的不对.
#3
typedef double seed[3];
.......
std::vector<seed> vec;
-------------------------------------------------------------------------------------
楼主要干什么?你见过两个数组相互直接赋值的么?
.......
std::vector<seed> vec;
-------------------------------------------------------------------------------------
楼主要干什么?你见过两个数组相互直接赋值的么?
#4
typedef double seed[3];
seed s[5] = { {0,0,0},{1,1,1},{2,2,2},{3,3,3},{4,4,4} };
std::vector<seed> vec;
for(int i=0;i<5;i++)
{
vec.push_back(s[i]);//提示这儿有错
}
--------------
个人觉得用结构体为vector中的元素比较好点.
struct seed
{
double dd1;
double dd2;
double dd3;
};
std::vector<seed> vec;
for(int i=0;i<5;i++)
{
seed s;
s.dd1 = i;
s.dd2 = i;
s.dd3 = i;
vec.push_back(s);//
}
seed s[5] = { {0,0,0},{1,1,1},{2,2,2},{3,3,3},{4,4,4} };
std::vector<seed> vec;
for(int i=0;i<5;i++)
{
vec.push_back(s[i]);//提示这儿有错
}
--------------
个人觉得用结构体为vector中的元素比较好点.
struct seed
{
double dd1;
double dd2;
double dd3;
};
std::vector<seed> vec;
for(int i=0;i<5;i++)
{
seed s;
s.dd1 = i;
s.dd2 = i;
s.dd3 = i;
vec.push_back(s);//
}
#5
double a[3];
double b[3];
a = b;
楼主,你看看这样的赋值(此处应该叫“初始化”,反正都非法,叫什么无所谓了)可以么?
double b[3];
a = b;
楼主,你看看这样的赋值(此处应该叫“初始化”,反正都非法,叫什么无所谓了)可以么?
#6
了解,结构体可以直接push_back,那如果就按我的定义该如何赋值呢?
#7
用两个vector也可以实现吧
typedef std::vector<int> seed;
int main()
{
std::vector<seed> vec;
for(int i=0;i<5;i++)
{
seed tmp;
tmp.push_back(i);
tmp.push_back(i);
tmp.push_back(i);
vec.push_back(tmp);
}
}
push_back的原型是void vector::push_back(const _TYPE& _X),参数是引用类型,所以数组是不可以的
typedef std::vector<int> seed;
int main()
{
std::vector<seed> vec;
for(int i=0;i<5;i++)
{
seed tmp;
tmp.push_back(i);
tmp.push_back(i);
tmp.push_back(i);
vec.push_back(tmp);
}
}
push_back的原型是void vector::push_back(const _TYPE& _X),参数是引用类型,所以数组是不可以的
#8
struct seed {
double v[3];
seed ();
seed (const seed&);
seed &operator= (const seed&);
};
double v[3];
seed ();
seed (const seed&);
seed &operator= (const seed&);
};
#9
突然想到
可不可以
struct seed{ double v[3] };
数值不能赋值,这样包装一下不知道可不可以呢?
没编译器,大家帮忙看看.
可不可以
struct seed{ double v[3] };
数值不能赋值,这样包装一下不知道可不可以呢?
没编译器,大家帮忙看看.
#10
这种情况下该怎么给seed赋值呢?
seed s;
s.v={0,0,0}; //编译不通过
s.v[3]={0,0,0}; //编译也不通过
seed s;
s.v={0,0,0}; //编译不通过
s.v[3]={0,0,0}; //编译也不通过
#11
sorry,突然迷糊了,问了个弱智的问题
#12
用struct包装一下是可以的
#13
谢谢各位,给分喽~~~