在C中存储一组坐标数组(对矢量向量?)
发布时间:2020-12-16 07:16:49 所属栏目:百科 来源:网络整理
导读:首先,我是C的新手所以我可能不得不考虑伪代码和/或 Python来解释我正在尝试做什么…… 我试图为动画的每一帧存储X和Y坐标对,用于多个精灵.我设想这类似于以下内容 – 假设PLAIN == 1(使用枚举): animationFrames[PLAIN][0] = { 20,50 }animationFrames[PLAI
首先,我是C的新手所以我可能不得不考虑伪代码和/或
Python来解释我正在尝试做什么……
我试图为动画的每一帧存储X和Y坐标对,用于多个精灵.我设想这类似于以下内容 – 假设PLAIN == 1(使用枚举): animationFrames[PLAIN][0] = { 20,50 } animationFrames[PLAIN][1] = { 25,55 } 等等.我本质上希望能够使用所讨论的精灵的ID查询animationFrames并接收一组X,Y坐标来迭代.我觉得这很棘手.这是我的尝试,这不起作用…… std::vector< std::vector< std::pair<int,int> > > frames = { { { 1,1 },{ 2,2 } // two frames for sprite A },{ { 3,3 },{ 4,4 } // two frames for sprite B } }; 这会导致以下错误消息: prog.cpp: In function 'int main()': prog.cpp:15: error: braces around initializer for non-aggregate type 'std::vector<std::vector<std::pair<int,int>,std::allocator<std::pair<int,int> > >,std::allocator<std::vector<std::pair<int,int> > > > >' 我尝试了各种矢量,对和阵列的突变,但我似乎无法弄明白. 提前致谢! 解决方法
我认为你的编译器可能无法处理C 11标准,这意味着它不支持大括号初始化.您可以逐个添加项目:
std::vector<std::vector<std::pair<int,int> > > frames(2); std::vector<std::pair<int,int> > &v1 = frames[0]; v1.push_back(std::pair<int,int>(1,1)); v1.push_back(std::pair<int,int>(2,2)); std::vector<std::pair<int,int> > &v2 = frames[1]; v2.push_back(std::pair<int,int>(3,3)); v2.push_back(std::pair<int,int>(4,4)); 它更加丑陋,但它应该有效.另一方面,如果您的编译器支持C 11,您甚至不需要=,并且您可以删除一些空格: std::vector<std::vector<std::pair<int,int>>> frames { { { 1,4 } // two frames for sprite B } }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |