请教,如何初始化一个类中的static const二维vector向量。
来源:互联网 发布:转换图片格式的软件 编辑:程序博客网 时间:2024/06/06 13:25
不多说了,RT:
代码如下:
class CEDMap
{
private:
static const vector<vector<int> > m_vvecGoalMap;
};
int naGoalMap[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 0};
我希望把二维向量m_vvecGoalMap初始化为跟这个二维数组naGoalMap一样的值,请问
我该如何去实现这个static const二维向量的初始化赋值呢?我在网上看到的都是
用一维数组去初始化一维的向量,我也试了多种方法,包括定义一个static的方法去
初始化m_vvecGoalMap的值,但因为是const的,都不可行,请教一下大家,有什么好的方法
推荐一下吗?非常感谢!
代码如下:
class CEDMap
{
private:
static const vector<vector<int> > m_vvecGoalMap;
};
int naGoalMap[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 0};
我希望把二维向量m_vvecGoalMap初始化为跟这个二维数组naGoalMap一样的值,请问
我该如何去实现这个static const二维向量的初始化赋值呢?我在网上看到的都是
用一维数组去初始化一维的向量,我也试了多种方法,包括定义一个static的方法去
初始化m_vvecGoalMap的值,但因为是const的,都不可行,请教一下大家,有什么好的方法
推荐一下吗?非常感谢!
- bdmh
- (bdmh)
- 等 级:
2
16
更多勋章
类似于这样
- C/C++ code
- vector<int> v(3,1); static const vector<vector<int> > m_vvecGoalMap(3,v);
- yaoike
- (想念着Run的Ike)
- 等 级:
哦,谢谢,但是,用你的方法的话,只是会得到3个相同的向量呀?
我希望 m_vvecGoalMap 跟 int naGoalMap[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 0};
的值一样,用贵兄的方法似乎实现不了吧。
我希望 m_vvecGoalMap 跟 int naGoalMap[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 0};
的值一样,用贵兄的方法似乎实现不了吧。
- najiutan
- (najiutan)
- 等 级:
#include <iostream.h>
#include <vector>
using namespace std;
class CEDMap
{
public:
vector<vector<int> > m_vvecGoalMap;
};
void main()
{
int naGoalMap[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 0};
CEDMap a;
vector<int>vec1 ,vec2,vec3;
for(int i=0;i!=3;i++)
vec1.push_back(naGoalMap[0][i]);
for(i=0;i!=3;i++)
vec2.push_back(naGoalMap[1][i]);
for(i=0;i!=3;i++)
vec3.push_back(naGoalMap[2][i]);
a.m_vvecGoalMap.push_back(vec1);
a.m_vvecGoalMap.push_back(vec2);
a.m_vvecGoalMap.push_back(vec3);
for(int j=0;j!=3;j++)
for(i=0;i!=3;i++)
cout<<(a.m_vvecGoalMap[j])[i]<<endl;
}
#include <vector>
using namespace std;
class CEDMap
{
public:
vector<vector<int> > m_vvecGoalMap;
};
void main()
{
int naGoalMap[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 0};
CEDMap a;
vector<int>vec1 ,vec2,vec3;
for(int i=0;i!=3;i++)
vec1.push_back(naGoalMap[0][i]);
for(i=0;i!=3;i++)
vec2.push_back(naGoalMap[1][i]);
for(i=0;i!=3;i++)
vec3.push_back(naGoalMap[2][i]);
a.m_vvecGoalMap.push_back(vec1);
a.m_vvecGoalMap.push_back(vec2);
a.m_vvecGoalMap.push_back(vec3);
for(int j=0;j!=3;j++)
for(i=0;i!=3;i++)
cout<<(a.m_vvecGoalMap[j])[i]<<endl;
}
- yaoike
- (想念着Run的Ike)
- 等 级:
楼上的兄弟,谢谢,但是m_vvecGoalMap是static const的,
请不要把前面那两个关键字给省略了,呵呵!
请不要把前面那两个关键字给省略了,呵呵!
- Csuxiaowu
- (西毒----)
- 等 级:
2
- C/C++ code
- #include <iostream>#include <vector>using namespace std;int a[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };vector< vector<int> > m_Goal;class Test{ public: Test(){}; static const vector< vector< int > > m_Test; void show(); void set(); private: int i;};const vector< vector< int > > Test::m_Test = m_Goal;void Test::show(){ for( int i = 0; i< m_Goal.size(); ++i ) { for( int j = 0; j< 3; ++j ) { cout<<m_Goal.at(i).at(j)<<" "; } // cout<<m_Goal.at(i).at(j)<<" "; }}void Test::set(){ int a[3][3] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; vector< int > m_One( a[0], a[0] + 3 ); vector< int > m_Two( a[1], a[1] + 3 ); vector< int > m_Three( a[2], a[2] + 3 ); m_Goal.push_back( m_One ); m_Goal.push_back( m_Two ); m_Goal.push_back( m_Three);}int main(){ Test some; some.set(); some.show();}
这样大概是 勉强可以的
- najiutan
- (najiutan)
- 等 级:
刚才没看清楼主的意思
- thegreatone
- (thegreatone)
- 等 级:
- C/C++ code
- #include<iostream>#include<vector>using namespace std;class CEDMap{public: static const vector<vector<int> > m_vvecGoalMap; static const vector<int> e;};int naGoalMap[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 0};vector<int> a1(naGoalMap[0],naGoalMap[0]+3);vector<int> a2(naGoalMap[1],naGoalMap[1]+3);vector<int> a3(naGoalMap[2],naGoalMap[2]+3);vector<int> b[3]={ a1,a2,a3};vector<vector<int> > vecGoalMap(b,b+3);const vector<vector<int> > CEDMap::m_vvecGoalMap=vecGoalMap;int main(){ for(int i=0;i<3;i++) { for(int j=0;j<3;j++) { cout<<CEDMap::m_vvecGoalMap[i][j]<<" "; } cout<<endl; } return 0;}
- yaoike
- (想念着Run的Ike)
- 等 级:
我在PC上运行试了一下,5楼的兄弟的方法似乎也不行呀?
你在show()方法上打印出来的是m_Goal的值而不是m_Test的值?我试着把m_Test的值打印出来,结果出错了,static的初始化是在赋值之前了。
这样吧,改个方式可能大家更容易关注我的疑问点:
举例来说,C++可以这样定义一个const的二维数组,
const int naGoalMap[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 0};
那要如何定义一个跟naGoalMap的值一样的,而且是const的二维vector呢?
你在show()方法上打印出来的是m_Goal的值而不是m_Test的值?我试着把m_Test的值打印出来,结果出错了,static的初始化是在赋值之前了。
这样吧,改个方式可能大家更容易关注我的疑问点:
举例来说,C++可以这样定义一个const的二维数组,
const int naGoalMap[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 0};
那要如何定义一个跟naGoalMap的值一样的,而且是const的二维vector呢?
- thegreatone
- (thegreatone)
- 等 级:
m_vvecGoalMap改为public只是为了能够在main函数中调用 m_vvecGoalMap,从而证实初始化成功,当然,你也可以添加一个静函数来证实。
- yaoike
- (想念着Run的Ike)
- 等 级:
哦,非常感谢,我还想请教一个问题,为什么我这样子写不行呢?
int naGoalMap[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 0};
const vector<vector<int> > CEDMap::m_vvecGoalMap(naGoalMap[0], naGoalMap[2]);
int naGoalMap[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 0};
const vector<vector<int> > CEDMap::m_vvecGoalMap(naGoalMap[0], naGoalMap[2]);
- Csuxiaowu
- (西毒----)
- 等 级:
2
oo 不好意思 set 搞错了
那就要 把那段搞出去
就 7 楼兄弟那样子
- thegreatone
- (thegreatone)
- 等 级:
因为m_vvecGoalMap存储的数据类型是vector<int>,而naGoalMap为二维数组,它的成员是一维数组,它们两个成员之间不能转换。
但是vector<int>存储的数据类型是int,而naGoalMap[0]的成员也是(int型)数据,所以在初始化vector<int>变量,只要迭代器之间的数据能够转化为int型时就可以了。
你可以再看看容器的初始化。
- 请教,如何初始化一个类中的static const二维vector向量。
- 请教,如何初始化一个类中的static const二维vector向量。
- 请教,如何初始化一个类中的static const二维vector向量。
- 二维 三维 向量vector 定义,初始化
- 二维 三维 向量vector 定义,初始化
- C++中的const,static const和static类成员的初始化问题
- C++中的const,static const和static类成员的初始化问题
- 关于类中的const 及 static成员初始化实例
- static const * const 类成员 初始化
- 二维向量:vector<vector<int>>
- 自定义一个vector向量类
- c++二维向量初始化
- c++ STL中怎么定义一个二维向量(vector)
- 类内const static(static const)成员变量初始化问题
- c++类中static、const、static const成员变量初始化
- c++类中const/static/const static成员变量初始化
- vector 二维数组 初始化
- 二维vector初始化
- 新生报到
- sicily分类
- QLJT移植u-boot-2010.09到s3c2440
- EDA的使用方法
- 请教,如何初始化一个类中的static const二维vector向量。
- 请教,如何初始化一个类中的static const二维vector向量。
- linux下处理大文件程序的编译参数
- 请教,如何初始化一个类中的static const二维vector向量。
- 加好友得积分做任务。
- 每天读一遍,不久你就会变
- 菜鸟的KMP
- SpringMVC中的Controller
- 阶乘
- final、finally和finalize的区别