VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 346|回复: 12

有没有可能重载操作符实现vector与{ }相加

[复制链接]
70_avatar_middle
最佳答案
0 
在线会员 发表于 2021-9-5 14:57:08 | 显示全部楼层 |阅读模式
std::vector<unsigned char> test1 = { 1,2,3 };
std::vector<unsigned char> test2 = test1 + { 4, 5, 6 };
---------就像上图 这样 有没有可能实现
弄了好久都不行  
百度了很久,有其他的方法比如
operator+(test1, { 4, 5, 6 });
但也不是我想要的(上图的效果)




上一篇:c++各种错误该如何解决啊
下一篇:37课问题
00_avatar_middle
最佳答案
5 
在线会员 发表于 2021-9-7 14:15:25 | 显示全部楼层
到底是为了什么 发表于 2021-9-7 12:57
写了重载还是不行   只能这样 cs.operator+({ 1, 2, 3 });  不能这样 cs = b + { 1, 2, 3 }   
在类外面 ...

看到字节集,,确认是易语言老手了
有没有可能重载操作符实现vector与{ }相加
70_avatar_middle
最佳答案
48 
在线会员 发表于 2021-9-7 09:08:16 | 显示全部楼层
自己写个类,里面封装vertor ,自己实现initializer_list 和 operator +
00_avatar_middle
最佳答案
5 
在线会员 发表于 2021-9-5 22:04:37 | 显示全部楼层
迭代器它还不够玩吗
31_avatar_middle
最佳答案
46 
在线会员 发表于 2021-9-6 14:52:12 | 显示全部楼层
有没有可能重载操作符实现vector与{ }相加 这东西有难度,但不是不能解决!
有没有可能重载操作符实现vector与{ }相加

评分

参与人数 1驿站币 +1 热心值 +1 收起 理由
00_avatar_small oyxbl + 1 + 1 无偿帮助菜鸡的时代已经结束了吗(```v```!)

查看全部评分

70_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-9-6 19:57:52 | 显示全部楼层
cpp2019 发表于 2021-9-6 14:52
这东西有难度,但不是不能解决!

有没有可能重载操作符实现vector与{ }相加那得几个红牛啊有没有可能重载操作符实现vector与{ }相加
70_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-9-7 12:57:41 | 显示全部楼层
tony666 发表于 2021-9-7 09:08
自己写个类,里面封装vertor ,自己实现initializer_list 和 operator +

写了重载还是不行   只能这样 cs.operator+({ 1, 2, 3 });  不能这样 cs = b + { 1, 2, 3 }   
在类外面写重载也不行
字节集 operator+(字节集& _Left, std::initializer_list<unsigned char>& _Right) 也识别不了
是我写错了吗
70_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-9-7 16:27:13 | 显示全部楼层
oyxbl 发表于 2021-9-7 14:15
看到字节集,,确认是易语言老手了

暴露了,同道中人
00_avatar_middle
最佳答案
5 
在线会员 发表于 2021-9-7 19:37:11 | 显示全部楼层

vector的重载过于麻烦,,现在想想各大主流语言创始人真不是一般人
来个迭代器低配版凑合
有没有可能重载操作符实现vector与{ }相加
  1. #include "stdafx.h"
  2. #include<iostream>
  3. #include<string>
  4. #include <vector>
  5. using namespace std;
  6. vector<char> addv(vector<char> a, vector<char>b)
  7. {
  8.         for (int idx = 0; idx < b.size(); idx++)
  9.         {
  10.                 a.push_back(b[idx]);
  11.         }
  12.         return a;
  13. }
  14. int main()
  15. {
  16.         vector<char> test1 = { 1,2,3 };
  17.         vector<char> test2 = { 4, 5, 6 };
  18.         vector<char> c = addv(test1, { 4,5,6 });
  19.         getchar();
  20.         return 0;
  21. }
复制代码
70_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-9-8 09:02:04 | 显示全部楼层
oyxbl 发表于 2021-9-7 19:37
vector的重载过于麻烦,,现在想想各大主流语言创始人真不是一般人
来个迭代器低配版凑合

用函数来链接我已经实现了 主要是 重载+ 来实现  这个还没实现 所以才来发帖求学的   
写 了 +重载 没有效果
00_avatar_middle
最佳答案
5 
在线会员 发表于 2021-9-8 11:30:17 | 显示全部楼层
到底是为了什么 发表于 2021-9-8 09:02
用函数来链接我已经实现了 主要是 重载+ 来实现  这个还没实现 所以才来发帖求学的   
写 了 +重载 没有 ...

我甚至认为易语言创始人就是用普通的一维数组加自定义类来实现的数组相加的
有没有可能重载操作符实现vector与{ }相加
70_avatar_middle
最佳答案
48 
在线会员 发表于 2021-9-8 15:38:11 | 显示全部楼层
到底是为了什么 发表于 2021-9-7 12:57
写了重载还是不行   只能这样 cs.operator+({ 1, 2, 3 });  不能这样 cs = b + { 1, 2, 3 }   
在类外面 ...

确实不行,顶多能达到这种程度
  1.     vectorPlus<int>vp1, vp2{1,2,3};
  2.     vp1 = vp2 + vectorPlus<int>{4, 5, 6};
复制代码
31_avatar_middle
最佳答案
46 
在线会员 发表于 2021-9-15 23:47:16 | 显示全部楼层

还没搞定?这个东西其实很简单,编程这个东西要灵活多变,不能生搬硬套,你懂我意思吗?

“你懂我意思吗?”,引用一下艳照门主的口头禅,没有别的意思,就是觉得他说这句话的时候很好笑!
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2021-9-27 06:03

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表