现在这是我将3个乘积类型的向量加在一起的方法:
For now this is how I add 3 vectors of type Product together:
vector1.insert(std::end(vector1), std::begin(vector2), std::end(vector2)); vector1.insert(std::end(vector1), std::begin(vector3), std::end(vector3));如何使用运算符重载(假设+和=运算符重载)来简化代码?产品具有以下属性:
How do I use operator overloading (I assume overloading the + and = operators) to simplify my code? Product has the following properties:
private: std::string url; double cost; std::string name; std::string site;推荐答案
操作重载只是普通的自由函数或成员函数.
Operating overloading is just a normal free function, or member function.
大多数情况下,它们没有什么特别的. (大部分"指的是运算符的优先级,并对operator*取消引用或operator,之类的注意事项.)
There's nothing special about them, mostly. (The "mostly" referring to operator precedence and some caveats for things like operator* dereferencing or operator,.)
以下是使用operator+=和append的示例,它们显示了相同的功能:
Here is an example using operator+= and append showing they do the same thing:
#include <iostream> #include <vector> using std::begin; using std::cout; using std::end; using std::endl; using std::ostream; using std::vector; struct Product { static int count; int i; Product() : i{++count} {} }; static ostream& operator<<(ostream& o, Product const& p) { o << p.i; return o; } int Product::count = 100; static void append(vector<Product>& v, vector<Product> const& v2) { v.insert(end(v), begin(v2), end(v2)); } static vector<Product>& operator+=(vector<Product>& v, vector<Product> const& v2) { v.insert(end(v), begin(v2), end(v2)); return v; } int main() { auto product1 = vector<Product>{}; product1.push_back(Product{}); product1.push_back(Product{}); product1.push_back(Product{}); product1.push_back(Product{}); auto product2 = vector<Product>{}; product2.push_back(Product{}); product2.push_back(Product{}); product2.push_back(Product{}); product2.push_back(Product{}); auto product3 = vector<Product>{}; product3.push_back(Product{}); product3.push_back(Product{}); product3.push_back(Product{}); product3.push_back(Product{}); append(product1, product2); product1 += product3; char const* sep = ""; for (auto const& p : product1) { cout << sep << p; sep = " "; } cout << endl; }更多推荐
C ++运算符重载将3个向量加在一起
发布评论