STL:如何为<vector>重载operator =?

MBe*_*Bes 3 c++ stl vector operators conversion-operator

有一个简单的例子:

#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
}
Run Code Online (Sandbox Code Playgroud)

我需要知道的是如何重载operator =以便我可以像这样进行赋值:

vector<double> = vector<int>;
Run Code Online (Sandbox Code Playgroud)

我刚尝试了很多方法,但总是编译器返回错误...

是否有任何选项可以使此代码无需更改?我可以写一些额外的行,但不能编辑或删除现有的行.TY.


好的我明白了.我会用另一种方式问你..有没有选择让这段代码无需改变它?我可以写一些额外的行,但不能编辑或删除现有的行.TY.

Kor*_*icz 12

为什么不以更简单的方式做到:

vector<double> vecd( veci.begin(), veci.end() );
Run Code Online (Sandbox Code Playgroud)

要么:

vecd.assign( veci.begin(), veci.end() );
Run Code Online (Sandbox Code Playgroud)

两者都支持开箱即用:)


小智 6

你不能.赋值运算符必须是成员函数,这意味着它必须是std :: vector模板的一个成员,你不允许修改它(或者C++标准所说).所以,编写一个自由函数:

void Assign( vector <double> & vd, const vector <int> & vi ) {
  // your stuff here
}
Run Code Online (Sandbox Code Playgroud)