如何在结构的向量中使用push_back

时间:2017-05-03 08:03:39

标签: c++ vector push-back

嘿伙计们我创建了一个struct节点。其中一个字段是一个向量(路径),我想存储字符。但是,当我尝试push_back一个字符时,编译器说“错误:'路径'未在此范围内声明”

#include <iostream>
#include <fstream>
#include <vector>
#include <iomanip>
#include <list>
#include <climits>
using namespace std;

struct node {
    int weight;
    bool pizza;   // true an tin exo
    vector <char> path;
    int tetmimeni, tetagmeni; // i, j gia na vro geitones
    } ;
node a;

int main(){
 a.tetmimeni=0;   // create start node
 a.tetagmeni=0;
 a.weight=0;
 a.pizza=true;
 a.path= path.push_back('S');

2 个答案:

答案 0 :(得分:2)

a.path= path.push_back('S');替换为a.path.push_back('S');

原始代码尝试将push_back的返回类型分配给a.path无效。

相反,您只想调用结构的push_back成员的std::vector方法。

答案 1 :(得分:0)

在您的代码中,node是一个结构。 Path是struct的一个元素。 无论何时需要访问struct的元素,都必须使用struct的名称。

e.g。当'a'属于类型节点时,a.pizza或a.weight。

同样,当您想要访问矢量路径时,您需要访问a.path。即使你需要调用vector的函数也没关系。

你应该通过struct / class