关于vector的赋值问题,急等!

时间:2021-08-30 04:16:34
小弟初用vector,写了一段程序做测试用
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;

#2


sorry,没看仔细,以上说的不对.

#3


typedef double seed[3];
.......
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);//
}


#5


double a[3];
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),参数是引用类型,所以数组是不可以的

#8


struct seed {
  double v[3];
  
  seed ();
  seed (const seed&);
  seed &operator= (const seed&);
};

#9


突然想到
可不可以
struct seed{ double v[3] };  
数值不能赋值,这样包装一下不知道可不可以呢?
没编译器,大家帮忙看看.

#10


这种情况下该怎么给seed赋值呢?
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;

#2


sorry,没看仔细,以上说的不对.

#3


typedef double seed[3];
.......
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);//
}


#5


double a[3];
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),参数是引用类型,所以数组是不可以的

#8


struct seed {
  double v[3];
  
  seed ();
  seed (const seed&);
  seed &operator= (const seed&);
};

#9


突然想到
可不可以
struct seed{ double v[3] };  
数值不能赋值,这样包装一下不知道可不可以呢?
没编译器,大家帮忙看看.

#10


这种情况下该怎么给seed赋值呢?
seed s;
s.v={0,0,0};    //编译不通过
s.v[3]={0,0,0};  //编译也不通过

#11


sorry,突然迷糊了,问了个弱智的问题

#12


用struct包装一下是可以的

#13


谢谢各位,给分喽~~~