vector定义的二维数组添加元素时出错,求大神帮忙解答

DriveAI 2014-08-29 05:39:57
代码如下:
定义Node类及构造方法

#include<iostream>
using namespace std;
class Node
{
private:
char *node_name;
int x;
int y;
public:
Node(char *node_name,int x,int y)
{
this->node_name = (char *)malloc(30*sizeof(char));
strcpy(this->node_name,node_name);
x=x;
y=y;
}
};


在main函数中调用此构造函数并添加到vector定义的二维数组中是报错

#include <iostream>
#include <vector>
#include "Node.h"
using namespace std;
int main(){
vector<vector<Node>> nodes;
char *node_name="通通通" ;
int x=60;
int y=50;
for(int i=0;i<10;i++)
{
Node newNode(node_name,x,y);
nodes[i].push_back(newNode);
}
system("pause");
return 0;
}

提示vector subscribe out of range.求大神帮忙解答
...全文
221 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
勤奋的小游侠 2014-08-29
  • 打赏
  • 举报
回复
    vector<vector<Node>> nodes; 改成     vector<vector<Node>> nodes(10);即可
DriveAI 2014-08-29
  • 打赏
  • 举报
回复
谢谢,是这样的。我用

int main(){
    vector<vector<Node>> nodes;
    char  *node_name="通通通" ;
    int x=60;
    int y=50;
    for(int i=0;i<10;i++)
    {
        for(int j=0;j<10;j++)
        {
           vector<Node> tempNodes;
           Node newNode(node_name,x,y);
        }
        nodes.push_back(tempNodes);
    }
    system("pause");
    return 0;
也实现了。
熊熊大叔 2014-08-29
  • 打赏
  • 举报
回复
你需要先向notes里push 10个元素, 没有push元素直接使用下标,肯定out of range btw: 前面应该是this->x = x; this->y = y;

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧