社区
工具平台和程序库
帖子详情
我用template写了一个array,请问如何重载‘=’运算符?
xloveronline
2003-08-19 03:40:47
通常定义数组 int a[]={1,2,3,4,5}
请问我用template写了一个array,请问如何重载‘=’运算符?
以实现传统数组的付值功能!
...全文
72
15
打赏
收藏
我用template写了一个array,请问如何重载‘=’运算符?
通常定义数组 int a[]={1,2,3,4,5} 请问我用template写了一个array,请问如何重载‘=’运算符? 以实现传统数组的付值功能!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kotton8848
2003-09-10
打赏
举报
回复
我也得也可以直接用数组名直接实现赋值!!!
robertnet
2003-09-06
打赏
举报
回复
同意楼上的用容器来解决这个问题省时省力。
Wolf0403
2003-09-02
打赏
举报
回复
通过容器类实现 ={, , } 基本上是不可能的。语出——《C++沉思录》
xloveronline
2003-08-26
打赏
举报
回复
恩,楼上的方案似乎可行!
nsly
2003-08-22
打赏
举报
回复
vector不是可以直接用[]吗?!
sevecol
2003-08-22
打赏
举报
回复
那是数组的初始化把。
传统数组可没有你所说的大赋值。
你想实现数组的整体赋值就重载operator=,然后内部使用传统的赋值方式一个元素一个元素的赋值。
xloveronline
2003-08-22
打赏
举报
回复
我说的是数组大赋值,不是重载[]运算符。
大赋值是={1,2,3,4}这样的赋值!
yjh1982
2003-08-21
打赏
举报
回复
vector可以大赋值嘛
sevecol
2003-08-21
打赏
举报
回复
楼主的要求是要达到 传统数组的付值功能
那就只需要重载[],返回T&,保证T支持正常的=操作就可以了。
xloveronline
2003-08-21
打赏
举报
回复
怎么可能会不能实现呢,听说候捷的《stl原码分析》里讲过这个问题啊。
ps 现在学c++好象很难找工作啊,好象所有的公司都在用java!
WhatCanIdoing
2003-08-21
打赏
举报
回复
一群天才在写 vector类模块是都没有考虑这个问题,
可能是太难,或太没用了吧......
sirouni2003
2003-08-20
打赏
举报
回复
实现传统的复值功能,应该是重载[]而不是=
而且要求在array中的元素支持=操作
noproblem_jyb
2003-08-19
打赏
举报
回复
忘了补充一点,如果你对执行期效率的要求不是很高,或者对代码的灵活度要求很高,上面的代码还可以写的更为灵活,譬如,使用distance()替代掉COMPILE_ASSERT.
BTW,如果你对COMPILE_ASSERT不熟悉,可以看看Modern C++ Design.
noproblem_jyb
2003-08-19
打赏
举报
回复
什么是“传统数组的赋值功能”?是对数组中的一个元素赋值,还是对整个数组赋值?
对元素赋值,只要overload operator [];对整个数组赋值,只要类似于下面的写法:
template<class T, int length>
class block
{
// other definitions
public:
template<class U, int len>
const block& operator = (const block<U, len>& rhs)
{ COMPILE_ASSERT(length >= len);
copy(rhs.begin(), rhs.end(), data_);
return *this;
}
private:
T data_[length];
};
sevecol
2003-08-19
打赏
举报
回复
提供一个[]就应该可以,但是要保证容器中的元素的类型支持=操作。
运算符
重载
运算符
重载
,C++可进行+、-、*、/等等操作。
课程设计代码
课程设计 编
写
一种线性群体的模板,并且实例化,用数组线性群体
c++实验课题
这是
重载
运算符
“+”和“-”将两个二 维数组相加和相减
重载
运算符
“+”和“-”将两个二 维数组相加和相减 真的,就是
C++模板实例代码(基础篇)
C++模板实例代码(基础篇),从基础学习,易于理解接受为以后提高打基础。
面向对象作业5-类模板.docx
设计
一个
类模板
Array
,可以像数组一样处理多个同类型数据,操作方法类似于数组,但其下标从1开始,且在进行下标访问时要检查下标是否越界。 假设主程序如下: int main () {
Array
a(5); int i; for (i = 1; i
Array
a2(6); for (i = 1; i
一个类模板
Array
,可以像数组一样处理多个同类型数据,操作方法类似于数组,但其下标从1开始,且在进行下标访问时要检查下标是否越界。 假设主程序如下: int main ()
工具平台和程序库
24,855
社区成员
27,329
社区内容
发帖
与我相关
我的任务
工具平台和程序库
C/C++ 工具平台和程序库
复制链接
扫一扫
分享
社区描述
C/C++ 工具平台和程序库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章