+ -
当前位置:首页 → 问答吧 → set的二维数组怎么用??

set的二维数组怎么用??

时间:2011-11-30

来源:互联网

vector<vector<double> > * p; p是指向一个二维vector数组的指针 对吧?

那么 为什么我在 一个程序里面见到 set的一段程序是这样的:
set<double> * p;
……
……
for( i=0;i< n;i++)
{
……
p[i].insert(a);// 这里的set 不是一维的吗?p[i]表示指向double型元素的指针啊,p[i].insert() 表示什么啊?难道p[i]表 //示一个指向set的指针???
……
}
 

作者: wymesmile   发布时间: 2011-11-30

[]运算符被重载了。

作者: TearyWang   发布时间: 2011-11-30

看看它的返回类型你就明白了。

作者: TearyWang   发布时间: 2011-11-30

set<double> * p;
只要p申请了内存,它可用下标的
p[1]相当于*(p+1)

作者: keiy   发布时间: 2011-11-30

那 p[i].empty() 是什么意思? 判断*(p+i)是否已存入值 ?? 感觉不对啊。

作者: wymesmile   发布时间: 2011-11-30

看下基本类型的数组与指针的关系应该可以明白
  int y[3]={1,2,3}; //int 数组
  int *p=y; //int指针
  cout << p[1] << endl; //p[1]==y[1]
  cout << *(p+1) << endl; //*(p+1)==y[1]
再看下:  
  set<double> *ps;
  set<double> s[2];
  ps=s;
  ps[0].empty(); //ps[0].empty()==set[0].empty()
  ps[1].empty(); //ps[1].empty()==set[1].empty()
当然就可以明白
  set<double> *ps;
  ps=new set<double>[2];
  ps[0].empty(); //ps[0].empty()
  ps[1].empty(); //ps[1].empty()
 

作者: keiy   发布时间: 2011-11-30

引用 5 楼 keiy 的回复:

看下基本类型的数组与指针的关系应该可以明白
int y[3]={1,2,3}; //int 数组
int *p=y; //int指针
cout << p[1] << endl; //p[1]==y[1]
cout << *(p+1) << endl; //*(p+1)==y[1]
再看下:
set<double> *ps;
s……


谢谢你 啦0, 我再问一个问题,是不是 set<double> s[2];
 s[0] ,s[1] 都是set<double> 型的? 而并不是double 型 ,是吗?

作者: wymesmile   发布时间: 2011-11-30

我现在看代码看的都晕了, 呵呵 ,是 set<double> 型的 , 对吧?;
引用 5 楼 keiy 的回复:

看下基本类型的数组与指针的关系应该可以明白
int y[3]={1,2,3}; //int 数组
int *p=y; //int指针
cout << p[1] << endl; //p[1]==y[1]
cout << *(p+1) << endl; //*(p+1)==y[1]
再看下:
set<double> *ps;
s……

作者: wymesmile   发布时间: 2011-11-30

C/C++ code
set<double> * p;
//p是一个指针,它可以指向一个或多个set,每个set的元素的类型是double
p=new set<double>[3];
//此时p[0],p[1],p[2]就分别是三个set<double>
delete[] p;

作者: zhao4zhong1   发布时间: 2011-11-30