C++ 存储在std::vector中的矩阵

C++ 存储在std::vector中的矩阵,c++,matrix,vector,C++,Matrix,Vector,假设我有一个正方形矩阵(例如4x4): < P>并假定我将这个矩阵存储在C++ STD::向量v,没有主对角线< /St>(Aij j,i=j)的项: 我如何编写一个C++函数 int IDX(int i,int j)< /> >,返回向量v?< /p>中的条目aiij的索引 使用名称空间std; int main() { inti,j,n; cin>>n>>i>>j; int ans=i*n+j-i; 如果(j>i) ans——; cout对于初学者,您只需乘以(n\u cols-1)即可,而

假设我有一个正方形矩阵(例如4x4):

< P>并假定我将这个矩阵存储在C++ STD::向量v,<强>没有主对角线< /St>(Aij j,i=j)的项:

<>我如何编写一个C++函数<代码> int IDX(int i,int j)< /> >,返回向量v?< /p>中的条目aiij的索引
使用名称空间std;
int main()
{
inti,j,n;
cin>>n>>i>>j;
int ans=i*n+j-i;
如果(j>i)
ans——;

cout对于初学者,您只需乘以(n\u cols-1)即可,而不是i*n\u cols+j,因为每行缺少一项。此外,您还需要调整j(基本上:
if(j>i)-j
)。如果i==j,则返回error。

请向我们展示您迄今为止所做的尝试。我还没有找到解决方案!然后请尝试一些东西,这样这里的人可以帮助您知道您已经投入了努力。显然,如果没有这个主对角线约束,我将返回i*num_rows+j。我正在考虑一个规则,使用if子句跳过i=j的情况。
没有主对角线上的条目
这意味着什么?条目0是否位于
i==j
?如果
i==j
,函数返回什么?
a_00 a_01 a_02 a_03
a_10 a_11 a_12 a_13
a_20 a_21 a_22 a_23
a_30 a_31 a_32 a_33
v = {a_01, a_02, a_03, a_10, a_12, a_13, a_20, a_21, a_23, a_30, a_31, a_32}
using namespace std;

int main()
{
    int i, j, n;
    cin >> n >> i >> j;
    int ans = i * n + j - i;
    if (j > i)
        ans--;
    cout << ans << endl;
    return 0;
}