双重下标([i] [j])的意思是什么?

时间:2016-01-24 20:35:23

标签: c++

我知道这是一个非常模糊的问题,可能措辞严厉,但我是c ++的初学者,并且一直看到这个(BTW我从某人的帖子中复制了这段代码):

if ( contents[i].size() >= 5 ) {
        for ( unsigned int j=3; j<4; ++j ) {
            double value = contents[i][j];
            contents[i][j] = 0.;
}
}

[i][j]”部分在contents[i][j] = 0.;中的含义是什么?我熟悉只使用一个[i],但我从未使用过两个......有人可以告诉我使用1 [i]与使用[i][j]有什么不同以及它意味着什么使用[i][j]

对于模糊的问题感到抱歉,但我找不到答案。感谢

5 个答案:

答案 0 :(得分:2)

Uncaught SyntaxError: embedded: Unexpected token (7:18) 5 | var Hello = React.createClass({ 6 | render: function() { > 7 | return <div>{</div>; | ^ 8 | } 9 | }); 最有可能存储一个2D数组:一个数组数组(可能是content,感谢@owacoder的注释)。

std::vector< std::vector<double> >访问contents[i]的{​​{1}}数组,其本身为i,然后contents访问std::vector<double>'存储在contents[i][j]中的j数组的元素。

答案 1 :(得分:1)

你有一个二维数组,所以你需要一个(宽,高)坐标来访问它中的每个元素?

enter image description here

答案 2 :(得分:0)

如果您有1d数组,则使用[i]访问第i个元素。

如果您有一个二维数组,即一个矩阵,则可以使用[i][j]访问第i行和第j列中的元素。

答案 3 :(得分:0)

通常,contents[i]表示容器的第i个元素(例如数组),但它可以表示设计者想要的意思。如果你自己编写一个类,你可以为该类编写operator[]来做任何你想做的事情 - 如果你让它做任何事情而不是返回对容器的第i个元素的引用,那么必须处理你的代码会诅咒你的名字。

所以contents[i][j]表示contents. For example,内容might be an array of arrays of int (often called a 2-dimensional array), or a vector of arrays of mYClass , or a vector {{的第i个元素的第j个元素1}} myContainer of myContainer , or a myOtherContainer` ...

答案 4 :(得分:0)

“双下标”实际上是两个单个下标。第二个下标适用于第一个下载的任何对象。

所以contents[i][j]我们有:

contents; // object taking subscript (array, vector etc...)

如果我们下标该对象以访问其内容,我们得到另一个取下标的对象:

contents[i]; // another object taking subscript

因此,您通常可以找到应用于 vector 的“双下标”,其中包含向量元素。

// a vector that contains vectors that each contain doubles
std::vector<std::vector<double>> contents;

然后:

contents; // returns a vector of vectors to doubles
contents[i]; // returns a vector of doubles
contents[i][j]; // returns a double

用于建模二维数据。