1

我正在尝试制作一个二维向量,其中 0 和 1 坐标都是复数,定义向量似乎工作正常,但是当我尝试访问它时,我收到一个错误,在新选项卡中弹出一堆乱七八糟的东西,但在那里的某个地方说矢量下标无效。(删节的)代码是

#include <iostream>     
#include <vector>
#include <complex>
using namespace std;
int main() 
{
vector<vector<complex<double>>> rho;
for(int g = 0; g < 4; ++g){
    for(int h = 0; h < 4; ++h){
        rho.push_back(vector<complex<double>>(2));
        rho.at(g).at(h) = 0;
        cout << rho.at(g).at(h)<<endl;
    }
}
}

任何帮助将不胜感激:) xx

4

2 回答 2

2

6年前提出的问题。

有一个无效的下标,因为您有一个包含内部向量的外部向量。您的外部向量在内循环上添加了一个新向量,因此您正在推回许多大小为 2 的向量,h 范围从 0 到 3,并且 2 和 3 是所有内部向量的无效下标。

不幸的是,这是那些“无用的无上下文”错误之一。如果它至少说“大小为 2 的向量的下标 2 无效”会更有用

于 2019-05-23T14:13:02.860 回答
-1

我认为对于 C++,尖括号需要用空格分隔。当我这样做时,代码会按原样工作。看这个

#include <iostream>
#include <vector>
#include <complex>
using namespace std;

int main()
{
    int g = 0;
    int h = 0;
    vector<vector<complex<double > > > rho;
    rho.push_back(vector<complex<double > >(2));
    rho.at(g).at(h) = 0;
    cout << rho.at(g).at(h)<<endl;
}
于 2013-01-09T17:47:49.640 回答