vector<string> coll2;
// fill both collections with the same elements
coll1.push_back ("1xxx");
coll1.push_back ("2x");
col12=coll1;
这个怎么说col12=coll1有问题?
6 个解决方案
#1
回答是肯定的,vector<string>对象间可以通过"="来初始化。
你上面程序中的错误在于 col12=coll1;是赋值语句,不是初始化。而对于容器类(包括 vector),没有定义类外的“=”运算符,所以col12=coll1;是非法的。
定义对象时的初始化应该是这样的:vector<string> coll2( coll1 );
你上面程序中的错误在于 col12=coll1;是赋值语句,不是初始化。而对于容器类(包括 vector),没有定义类外的“=”运算符,所以col12=coll1;是非法的。
定义对象时的初始化应该是这样的:vector<string> coll2( coll1 );
#2
接上帖:
定义对象时的初始化或者是这样的:vector<string> coll2 = coll1;。以上两者等价。
定义对象时的初始化或者是这样的:vector<string> coll2 = coll1;。以上两者等价。
#3
是呀,来晚了。
#4
也可以用iterator.逐个push_back
#5
不过如果是
vector<int>coll1;
vector<int> coll2;
coll1 = coll2;
好象是没问题的。
vector<int>coll1;
vector<int> coll2;
coll1 = coll2;
好象是没问题的。
#6
注意!
我上面的回答有错误。我竟然说 vector<string> 对象间不能互相赋值,对此还做了错误的解释。现在予以改正:
所有的C++标准库中的容器类,只要它们的元素的类型相同,其对象间可以互相赋值。
现在发现楼主程序中的错误在于书写问题:col12=coll1; 中的 col12 应该改为 coll2。
我上面的回答有错误。我竟然说 vector<string> 对象间不能互相赋值,对此还做了错误的解释。现在予以改正:
所有的C++标准库中的容器类,只要它们的元素的类型相同,其对象间可以互相赋值。
现在发现楼主程序中的错误在于书写问题:col12=coll1; 中的 col12 应该改为 coll2。
#1
回答是肯定的,vector<string>对象间可以通过"="来初始化。
你上面程序中的错误在于 col12=coll1;是赋值语句,不是初始化。而对于容器类(包括 vector),没有定义类外的“=”运算符,所以col12=coll1;是非法的。
定义对象时的初始化应该是这样的:vector<string> coll2( coll1 );
你上面程序中的错误在于 col12=coll1;是赋值语句,不是初始化。而对于容器类(包括 vector),没有定义类外的“=”运算符,所以col12=coll1;是非法的。
定义对象时的初始化应该是这样的:vector<string> coll2( coll1 );
#2
接上帖:
定义对象时的初始化或者是这样的:vector<string> coll2 = coll1;。以上两者等价。
定义对象时的初始化或者是这样的:vector<string> coll2 = coll1;。以上两者等价。
#3
是呀,来晚了。
#4
也可以用iterator.逐个push_back
#5
不过如果是
vector<int>coll1;
vector<int> coll2;
coll1 = coll2;
好象是没问题的。
vector<int>coll1;
vector<int> coll2;
coll1 = coll2;
好象是没问题的。
#6
注意!
我上面的回答有错误。我竟然说 vector<string> 对象间不能互相赋值,对此还做了错误的解释。现在予以改正:
所有的C++标准库中的容器类,只要它们的元素的类型相同,其对象间可以互相赋值。
现在发现楼主程序中的错误在于书写问题:col12=coll1; 中的 col12 应该改为 coll2。
我上面的回答有错误。我竟然说 vector<string> 对象间不能互相赋值,对此还做了错误的解释。现在予以改正:
所有的C++标准库中的容器类,只要它们的元素的类型相同,其对象间可以互相赋值。
现在发现楼主程序中的错误在于书写问题:col12=coll1; 中的 col12 应该改为 coll2。