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