C++ 重载运算符 [ ][ ]

2024-02-04

我有 CMatrix 类,其中是指向值数组的“双指针”。

class CMatrix {
public:
    int rows, cols;
    int **arr;
};

我只需要通过键入以下内容来访问矩阵的值:

CMatrix x;
x[0][0] = 23;

我知道如何使用以下方法做到这一点:

x(0,0) = 23;

但我确实需要以另一种方式做到这一点。有人能帮我吗?

最后我是这样做的...

class CMatrix {
public:
   int rows, cols;
   int **arr;

public:
   int const* operator[]( int const y ) const
   {
      return &arr[0][y];
   }

   int* operator[]( int const y )
   {
      return &arr[0][y];
   }

   ....

你不能超载operator [][],但这里常见的习惯用法是使用代理类,即过载operator []在您的 Matrix 类上返回不同类的实例,然后该实例具有operator []其上超载。

例如:

class CMatrix {
public:
    class CRow {
        friend class CMatrix;
    public:
        int& operator[](int col)
        {
            return parent.arr[row][col];
        }
    private:
        CRow(CMatrix &parent_, int row_) : 
            parent(parent_),
            row(row_)
        {}

        CMatrix& parent;
        int row;
    };

    CRow operator[](int row)
    {
        return CRow(*this, row);
    }
private:
    int rows, cols;
    int **arr;
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 重载运算符 [ ][ ] 的相关文章

  • 如何在 C++ 中的文件末尾添加数据?

    我已按照网上的说明进行操作 此代码应该将输入添加到文件 数据库 的末尾 但当我检查时 数据会覆盖现有数据 请帮忙 这是我的代码 int main string name string address string handphone cou
  • 在 C# 中创建具有单独列的分隔文本

    我一直在尝试在 C 中创建一个制表符限制的文本文件 以便数据正确显示在单独的列中 Firstname Lastname Age John Smith 17 James Sawyer 31 我尝试过 t 字符 但我得到的只是 Firstnam
  • 如何为 C 分配的 numpy 数组注册析构函数?

    我想在 C C 中为 numpy 数组分配数字 并将它们作为 numpy 数组传递给 python 我可以做的PyArray SimpleNewFromData http docs scipy org doc numpy reference
  • 如何将 #ifdef DEBUG 添加到 Xcode?

    我的项目中有一些代码永远不应该在发布版本中使用 但在测试时很有用 我想做这样的事情 ifdef DEBUG Run my debugging only code endif 在 Xcode 4 中哪里添加 DEBUG 设置 我尝试将其放入
  • 在新的浏览器进程中打开 URL

    我需要在新的浏览器进程中打开 URL 当浏览器进程退出时我需要收到通知 我当前使用的代码如下 Process browser new Process browser EnableRaisingEvents true browser Star
  • 在 Unity 进程和另一个 C# 进程之间进行本地 IPC 的最快方法 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我希望每秒大约 30 次从 C 应用程序向我的 Unity 应用程序传送大量数据 由于 Unity 不支持映射内存和管道 我考虑了 t
  • 单元测试一起运行时失败,单独运行时通过

    所以我的单元测试遇到了一些问题 我不能只是将它们复制并粘贴到这里 但我会尽力而为 问题似乎是 如果我一项一项地运行测试 一切都会按预期进行 但如果我告诉它一起运行测试 则 1 5 将通过 TestMethod public void Obj
  • 如何访问另一个窗体上的ListView控件

    当单击与 ListView 所在表单不同的表单中的按钮时 我试图填充 ListView 我在 Form1 中创建了一个方法以在 Form2 中使用 并将参数传递给 Form1 中的方法 然后填充 ListView 当我调试时 我得到了传递的
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • 将 System.Windows.Input.KeyEventArgs 键转换为 char

    我需要将事件参数作为char 但是当我尝试转换 Key 枚举时 我得到的字母和符号与传入的字母和符号完全不同 如何正确地将密钥转换为字符 这是我尝试过的 ObserveKeyStroke this new ObervableKeyStrok
  • 关于在 Windows 上使用 WiFi Direct Api?

    我目前正在开发一个应用程序 我需要在其中创建链接 阅读 无线网络连接 在桌面应用程序 在 Windows 10 上 和平板电脑 Android 但无关紧要 之间 工作流程 按钮 gt 如果需要提升权限 gt 创建类似托管网络的 WiFi 网
  • 单击 form2 上的按钮触发 form 1 中的方法

    我对 Windows 窗体很陌生 我想知道是否可以通过单击表单 2 中的按钮来触发表单 1 中的方法 我的表格 1 有一个组合框 我的 Form 2 有一个 保存 按钮 我想要实现的是 当用户单击表单 2 中的 保存 时 我需要检查表单 1
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en
  • 如何将整数转换为 void 指针?

    在 C 中使用线程时 我面临警告 警告 从不同大小的整数转换为指针 代码如下 include
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做
  • 如何在 Blackberry Cascades 中显示具有特定号码的电话板

    我正在使用带有 C QT 和 QML 的 Blackberry Cascades 10 Beta 3 SDK 以及 Blackberry 10 Dev Alpha Simulator 和 QNX Momentics IDE 并且我正在尝试实
  • 使用 GhostScript.NET 打印 PDF DPI 打印问题

    我在用GhostScript NET http ghostscriptnet codeplex com打印 PDF 当我以 96DPI 打印时 PDF 打印效果很好 但有点模糊 如果我尝试以 600DPI 打印文档 打印的页面会被极大地放大
  • 如何使用 Word Automation 获取页面范围

    如何使用办公自动化找到 Microsoft Word 中第 n 页的范围 似乎没有 getPageRange n 函数 并且不清楚它们是如何划分的 这就是您从 VBA 执行此操作的方法 转换为 Matlab COM 调用应该相当简单 Pub
  • 如何正确使用 std::condition_variable?

    我很困惑conditions variables以及如何 安全 使用它们 在我的应用程序中 我有一个创建 gui 线程的类 但是当 gui 是由 gui 线程构造时 主线程需要等待 情况与下面的函数相同 主线程创建互斥体 锁和conditi

随机推荐

  • Spring-Boot Elasticseach EntityMapper 无法自动装配

    基于这个答案 https stackoverflow com a 44523398 3493036以及我实现代码以接收弹性搜索查询分数的评论 public class CustomizedHotelRepositoryImpl implem
  • 将 exp/power 趋势线添加到 ggplot

    我想在我的图中添加指数 幂 趋势 线 我正在使用 ggplot2 包 我有这样的东西 只是有更多的数据 require ggplot2 df lt read table test csv header TRUE sep df meta te
  • 在 docker-entrypoint-initdb.d 中创建 pg_cron 扩展失败

    如果我创建pg cron https github com citusdata pg cron扩展在一个docker entrypoint initdb d init sql文件 docker镜像无法运行并且docker logs
  • 在 Android 应用程序中使用 Stripe 秘密 api 密钥是否安全?

    我在这里看到一些人建议这样做是可以的 这看起来容易得多 但是有人不能反编译您的应用程序并泄露您的密钥吗 提前致谢 您绝对不应该将密钥放入移动应用程序中 正如您所怀疑的 找回您的钥匙会很容易 一旦攻击者获得了您的密钥 他们基本上就可以对您的帐
  • 使用 HttpURLConnection 上传多个图像文件[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想使用 HttpURLConnection 上传多个图像文件 并且图像的数量不固定为从 android 上传多少个文件 请不要发送
  • 如何将 fread() 与“https”url 方案一起使用?

    在 fread 的 R 文档中 输入 参数可能是以 http 或 file 开头的 URL 然而在这个 数据表简介 https rawgit com wiki Rdatatable data table vignettes datatabl
  • 分号作为 URL 查询分隔符

    虽然强烈推荐 W3C 源代码 http www w3 org TR 1999 REC html401 19991224 appendix notes html h B 2 2 via 维基百科 http en wikipedia org w
  • Spring Tool Suite 更改键绑定自动完成

    How do I change the keybinding for code autocompletion Ctrl Space is just horrible I would like to have Alt Space But un
  • 项目文件夹已存在且不为空 - netbeans 中出现错误

    我正在使用 NetBeans 7 0 1 当我尝试创建 JAVA 应用程序时 出现错误 项目文件夹已存在且不为空 但事实是项目文件夹不存在 它们的目录中没有同名文件夹 任何建议都会有很大的帮助 提前致谢 当您尝试创建它时 问题是否出现了 或
  • Solrcloud 删除集合错误?

    首先 我创建一个名为的集合用户集合 http xxxxx solr admin collections action CREATE name usercollection numShards 3 replicationFactor 3 ma
  • docker-compose内部DNS服务器127.0.0.11连接被拒绝

    突然 当我使用 docker compose 部署一些新容器时 内部主机名解析不起作用 当我尝试使用 docker compose yaml 文件中的服务名称从另一个容器 ping 一个容器时 我得到了ping bad address my
  • 错误简单示例 lucene 4.0 与源(不是 jar lib)

    编辑 我找到了解决方案 编辑core jar 删除除编解码器包之外的所有包并添加到构建路径 编解码器包必须在jar中 不能是源代码 我无法理解 这是 Lucene 的非常简单的代码 它与 Lucene core lib 一起运行 但是当我使
  • SKLearn KMeans 收敛警告[重复]

    这个问题在这里已经有答案了 我在一维数据集上使用 SKLearn 的 KMeans 聚类 我遇到的错误是 当我运行代码时 我得到一个ConvergenceWarning ConvergenceWarning Number of distin
  • Pinterest Api 限制返回的 pin 数量

    使用此请求获取 Pinterest Api 用户的 pin 来自pinterest API 文档 https stackoverflow com questions 9951045 pinterest api documentation h
  • 泛型,其中 T 是实现接口的类

    我有一个界面 interface IProfile 和一个类 Serializable class Profile IProfile private Profile private to ensure only xmlserializer
  • 查看用户最近执行的Android任务

    我想查看我的 Android 手机最近的任务 我尝试了一些来自互联网的代码 但没有一个能正常工作 我只想获取用户最后执行的应用程序的PID和名称 例如 如果我执行计算器应用程序 然后执行我创建的最近任务应用程序 则该应用程序应该能够告诉我类
  • 本地时间(以毫秒为单位)

    我怎样才能通过图书馆提升获得当前时间 我可以做这个 ptime now boost posix timesecond clock local time tm d tm to tm now 但最后一个时间单位tm结构是第二位 我需要以毫秒为单
  • 用于 Git 更新的 RSS 提要

    是否有我可以订阅的 RSS Atom 提要或 Git 更新邮件列表 我发现很难跟上最新版本 因为我无法知道新版本何时发布 对于 msysgit Windows 端口 它只是 Google Code 提供的 feed http code go
  • 可以停止由 VIsual Studio 2015 生成 *.ipdb *.iobj 文件吗?

    在 Visual Studio Community 2015 中 Visual C 项目在其 Release 文件夹中生成 ipdb 文件和 iobj 文件 现在在 Visual Studio Community 2013 中 我从未见过在
  • C++ 重载运算符 [ ][ ]

    我有 CMatrix 类 其中是指向值数组的 双指针 class CMatrix public int rows cols int arr 我只需要通过键入以下内容来访问矩阵的值 CMatrix x x 0 0 23 我知道如何使用以下方法