应该怎么样定义a[-1]这样的变量呢

洗洗睡去 2010-12-27 03:12:07
在做偏微分方程数值解的时候 要用到数组的前后2个边界 比如
double a[100];
计算的时候 有2个边界数值 如果把它们安排到a[-1]和a[100]的话 就可以很方便的迭代,
想问下 怎么样定义这种不是标准的变量呢
...全文
140 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingrain213 2010-12-27
  • 打赏
  • 举报
回复
VC里面数组第一个是从0开始的,MATLAB是1 ,都不能出现负值的,除非试试索引
洗洗睡去 2010-12-27
  • 打赏
  • 举报
回复
恩 一开始以为[]不可以重载 查了下 只有. -> ?:不能重载 问题解决
cpp2017 2010-12-27
  • 打赏
  • 举报
回复
最好改成int& operator ,因为你可能还要赋值
cpp2017 2010-12-27
  • 打赏
  • 举报
回复
class MyInt
{

public:
int ary[100];

MyInt()
{
for (int i =0;i<100;i++)
{
ary[i] = i;
}
}

int operator[](int nIndex)
{
return ary[nIndex+1];
}
};



使用:

MyInt a;
int n = a[-1];
向立天 2010-12-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sunnyloves 的回复:]
引用 5 楼 cpp2017 的回复:

我就是想问下 有没什么方法 能定义出a[-1] a[100]这样的变量

使用方法代替数组,这样看起来就变成了-1,

如:

double A(int Index)
{
return a[Index+1];

}

这个我也想过 就是想更直接的使用方括号 呵呵 数组里圆括号 感觉怪怪的
[/Quote]
[]也是操作符
我记得可以重载的
cpp2017 2010-12-27
  • 打赏
  • 举报
回复
弄个操作符重载就可以了

洗洗睡去 2010-12-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cpp2017 的回复:]

我就是想问下 有没什么方法 能定义出a[-1] a[100]这样的变量

使用方法代替数组,这样看起来就变成了-1,

如:

double A(int Index)
{
return a[Index+1];

}
[/Quote]
这个我也想过 就是想更直接的使用方括号 呵呵 数组里圆括号 感觉怪怪的
向立天 2010-12-27
  • 打赏
  • 举报
回复
自己做个映射或是重载[]应该可以实现
fortran就支持这种数组索引
  • 打赏
  • 举报
回复
a[-1]也没啥,只要不取值都没问题。
cpp2017 2010-12-27
  • 打赏
  • 举报
回复
我就是想问下 有没什么方法 能定义出a[-1] a[100]这样的变量

使用方法代替数组,这样看起来就变成了-1,

如:

double A(int Index)
{
return a[Index+1];

}
奉海 2010-12-27
  • 打赏
  • 举报
回复
这样搞吧。
定义a[0]和a[101]这是不容质疑的,
你计算的时候对下标做做文章,比如n(-1 ~ 100)为下标。做计算时对n+1后不就对应到0 ~ 101上了,就可以用a[n]了。
洗洗睡去 2010-12-27
  • 打赏
  • 举报
回复
楼上几位都没理解我的意思 我当然知道是越界了
当然可以通过double a[102];然后用a[0]当a[-1] a[101]当a[100]了,
但是 采用这种表面看上去越界的方法 解决我的实际问题 是最快速 最简洁的。
我就是想问下 有没什么方法 能定义出a[-1] a[100]这样的变量
tigerMayDo 2010-12-27
  • 打赏
  • 举报
回复
数组越界 想想别的办法吧 比如定义a[0]和a[101]为边界
shenyi0106 2010-12-27
  • 打赏
  • 举报
回复
数组下标从0开始,这是基础常识
当然啦,也不是不能变,可以通过计算来改变,比如设置参考坐标的方式就可以,设置从0开始和设置从50开始时有区别的,从0开始就没有负值,从50开始,那么可以认为0~49都是负值,50是0,50以上是正值

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧