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)
| 归档时间: |
|
| 查看次数: |
2949 次 |
| 最近记录: |