C ++运算符重载将3个向量加在一起

编程入门 行业动态 更新时间:2024-10-28 04:16:06
本文介绍了C ++运算符重载将3个向量加在一起的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

现在这是我将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个向量加在一起

本文发布于:2023-11-30 18:13:52,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1651020.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:向量   加在   运算符

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!