无效的向量<t>下标</t>

时间:2013-01-09 17:40:28

标签: c++ visual-studio-2010 vector complex-numbers subscript

我正在尝试制作一个二维向量,其中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

2 个答案:

答案 0 :(得分:0)

6年前问的问题。

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

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

答案 1 :(得分:-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;
}