首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >我能避免矩阵类迭代器中的循环依赖吗?

我能避免矩阵类迭代器中的循环依赖吗?
EN

Stack Overflow用户
提问于 2010-05-18 05:18:44
回答 5查看 3K关注 0票数 2

我们有两门课:

代码语言:javascript
运行
AI代码解释
复制
template<typename T, typename Size, typename Stack, typename Sparse>
class Matrix

代码语言:javascript
运行
AI代码解释
复制
template<typename T, typename Size>
class Iterator

矩阵应该能够返回开始和结束迭代器和迭代器将保持引用矩阵,以访问元素通过它的接口。我们不希望Iterator依赖于矩阵的内部存储来防止耦合。我们如何解决这个循环依赖问题?

(内部存储类与矩阵类具有相同的模板参数,与矩阵本身具有相同的访问过程)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-05-18 05:25:13

为了迭代,迭代器通常需要知道它们迭代过的内部存储--这种耦合通常是无法避免的。以一个地图迭代器为例,它必须了解映射的内部树结构,才能完成它的工作。

票数 2
EN

Stack Overflow用户

发布于 2010-05-18 05:31:20

首先,前向声明矩阵类。这允许Iterator类查看矩阵类的名称,并进行指针和对其的引用。(它还不允许Iterator类访问成员数据或调用成员函数。)

代码语言:javascript
运行
AI代码解释
复制
template<typename T, typename Size, typename Stack, typename Sparse>
class Matrix;

然后,定义Iterator类。此时它所能做的就是保存对矩阵的引用和指针。(尚未接触到矩阵的成员。)

代码语言:javascript
运行
AI代码解释
复制
template<typename T, typename Size>
class Iterator{
   // don't define any function bodies in here
   //but do put all data members and prototypes in here
};

然后定义矩阵类(可以访问Iterator成员)

代码语言:javascript
运行
AI代码解释
复制
template<typename T, typename Size, typename Stack, typename Sparse>
class Matrix{
   // don't define any function bodies in here
   //but do put all data members and prototypes in here
};

然后为每个类定义方法体。此时,两个类的方法都可以访问对方的成员。通常,这个部分在.cpp文件中,但是对于模板,它属于.h文件。

代码语言:javascript
运行
AI代码解释
复制
template<typename T, typename Size, typename Stack, typename Sparse>
Matrix<T,Size,Stack,Sparse>::Matrix(){ /*...*/}

template<typename T, typename Size>
Iterator<T,Size>::Iterator(){ /*...*/ }
票数 5
EN

Stack Overflow用户

发布于 2010-05-18 05:50:11

在这里,使用嵌套类也是合适的,它可以减少所需的模板参数的数量。

代码语言:javascript
运行
AI代码解释
复制
template<typename T, typename Size, typename Stack, typename Sparse>
class Matrix{
public:
   class Iterator{
       // define Iterator members here
   };
   // declare Matrix members here
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2857589

复制
相关文章
CSS 为没有内容的元素设置样式 :not(:empty)
当我们想要根据元素内部是否有内容来显示特定的样式时 我们可以使用 :not 与:empty 结合来实现这个效果 代码如下 .handle_menu_content:not(:empty){ width: 90px; position: fixed; z-index: 999999; top: 0; z-index: 9999999; left: 38px; background: #fff; border-r
拿我格子衫来
2022/01/24
1.8K0
修改表单元素中placeholder属性样式、清除IE浏览器中input元素的清除图标和眼睛图标
在做项目的时候,一般表单元素的placeholder属性样式都是使用浏览器默认的,但有时候为了追求设计上的美感需要修表单元素的placeholder样式(也有可能是遇到了一个处女座的设计师或者是客户),就不等不修改一下placeholder的样式。可以通过下面的代码修改样式:
用户6167509
2019/09/04
2K0
修改表单元素中placeholder属性样式、清除IE浏览器中input元素的清除图标和眼睛图标
为什么我的样式不起作用?
大概看一下代码,是有一个Parent的父组件,蓝底白字。还有一个Child的子组件,红底黑字。 那么实际渲染出的样式是什么样子的呢。如下图:
w候人兮猗
2020/07/01
4.2K0
HTML中的内联元素与块级元素
文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书
Tyan
2022/05/09
3.2K0
为什么我的HibernateDaoSupport没有注入SessionFactory
1.按理来说Spring应该会通过setSessionFactory方法将SessionFactory注入进来,可是并没有。
用户2032165
2019/04/09
3.1K0
为什么我的HibernateDaoSupport没有注入SessionFactory
为什么 MyBatis 源码中,没有我那种 if···else
在MyBatis的两万多行的框架源码中,使用了大量的设计模式对工程架构中的复杂场景进行解耦,这些设计模式的巧妙使用是整个框架的精华。
搜云库技术团队
2023/10/21
2020
为什么 MyBatis 源码中,没有我那种 if···else
html table样式设计_html设置table中的字体
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/05
5.7K0
为什么 MyBatis 源码中,没有我那种 if···else
在MyBatis的两万多行的框架源码中,使用了大量的设计模式对工程架构中的复杂场景进行解耦,这些设计模式的巧妙使用是整个框架的精华。
一行Java
2023/09/19
2340
为什么 MyBatis 源码中,没有我那种 if···else
html中table样式_table样式设置
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/05
5.5K0
html中table样式_table样式设置
html 中的可替换(置换)元素
在 CSS 中,可替换元素(replaced element)的展现效果不是由 CSS 来控制的。这些元素是一种外部对象,它们外观的渲染,是独立于 CSS 的。
用户9914333
2022/07/21
3.2K0
html中各种hr样式
<hr style=" height:2px;border:none;border-top:2px dotted #185598;" />
致Great
2023/08/26
1870
html直接分页的样式,HTML分页样式「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160613.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/09
6.6K0
4.HTML样式布局区块标签元素介绍
本章节,主要介绍HTML布局与区块的元素介绍, 比如头部,中部,尾部以及行内区块与行外区块等,具体讲解如下述所示。
全栈工程师修炼指南
2023/03/21
1.4K0
4.HTML样式布局区块标签元素介绍
嵌套的 HTML 元素
<!DOCTYPE html> <html> <body> <p>这是第一个段落。</p> </body> </html>
用户8442333
2021/08/21
2K0
三种方式解决vue中v-html元素中标签样式
三.通过 >>> 可以使得在使用scoped属性的情况下,穿透scoped,修改其他组件的值
honey缘木鱼
2018/11/21
2.6K0
我的markdown样式
样式 * { font-family: "微软雅黑"; } html { padding: 0px; margin: 0px; color: #000; background: #fff; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } body{ padding: 0px 10px; margin: 0px; border: 1px dashed
码客说
2019/10/22
4600
html 简单的table样式
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/155752.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/06
3.2K0
html 简单的table样式
如何更改伪元素的样式
在前端开发中我们会经常用到伪元素,有时候需要通过js来修改伪元素的样式,那么有哪几种方式来修改伪元素的样式呢?
挥刀北上
2021/01/27
9.4K0
如何更改伪元素的样式
获取元素的样式属性 原
document.getElementById("test").style.color 这种方式获取的只是内联样式,并不能获取内部样式和外部样式,下面为内部样式
tianyawhl
2019/04/04
2.4K0
v-if绑定的元素为什么事件没有响应
Vue是一套构建用户界面的 渐进式框架,入门也比较容易,但在使用过程中却可能会遇到这样那样的问题,今天笔者就将使用中遇到的一个问题记录于此,希望能帮到遇到类似问题的朋友。
johnhuster的分享
2022/03/28
1.2K0

相似问题

使用JQuery在5个表列后添加新表行

13

如何通过javascript在页面后添加表的行?

37

通过Javascript动态添加表行后删除

13

达到行限制后自动删除表行,并使用带有javascript的Websocket数据向行添加新数据

17

如何使用Jquery在表行和表列中添加对象

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文