有一个简单的例子:
#include <vector>
int main() {
vector<int> veci;
vector<double> vecd;
for(int i = 0;i<10;++i){
veci.push_back(i);
vecd.push_back(i);
}
vecd = veci; // <- THE PROBLEM
}
我需要知道的是如何重载operator =以便我可以像这样进行赋值:
vector<double> = vector<int>;
我刚尝试了很多方法,但编译器一直在返回错误......
有没有选项让这段代码无需更改即可运行?我可以写一些额外的行,但不能编辑或删除现有的行。 TY。
好的,我明白了。我会用另一种方式问你.. 是否有任何选项可以使此代码无需更改?我可以写一些额外的行,但不能编辑或删除现有的行。 TY。
答案 0 :(得分:12)
为什么不以更简单的方式做到这一点:
vector<double> vecd( veci.begin(), veci.end() );
或者:
vecd.assign( veci.begin(), veci.end() );
开箱即用支持两种方式:)
答案 1 :(得分:6)
你做不到。赋值运算符必须是成员函数,这意味着它必须是std :: vector模板的成员,您不能修改它(或者C ++标准所说)。所以,编写一个自由函数:
void Assign( vector <double> & vd, const vector <int> & vi ) {
// your stuff here
}
答案 2 :(得分:0)
如果这是一个谜题,这将有效...
#include <vector>
int main()
{
vector<int> veci;
{
vector<double> vecd;
}
vector<int> vecd;
for (int i = 0; i < 10; ++i)
{
veci.push_back(i);
vecd.push_back(i);
}
vecd = veci; // voila! ;)
}