2017-05-03 9 views
-3

안녕하세요, 저는 구조체 노드를 만들었습니다.구조체의 벡터에서 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

a.path= path.push_back('S'); 교체 " '경로'이 범위에서 선언되지 않은 오류"의 필드 중 하나가 내가 문자 컴파일러와 push_back 할 때 characters.however 저장할 벡터 (경로) 말한다 with just a.path.push_back('S');

원래 코드는 push_back의 반환 유형을 a.path에 할당하려고 시도했지만 올바르지 않습니다.

대신 std::vector 구조체의 push_back 메서드를 호출하기 만하면됩니다.

0

코드에서 노드는 구조체입니다. Path는 struct의 한 요소입니다. struct의 요소에 액세스해야 할 때마다 구조체의 이름을 함께 사용해야합니다.

예컨대 a.pizza 또는 a.weight는 'a'가 유형 노드 일 때 사용됩니다.

마찬가지로 벡터 경로에 액세스하려면 a.path에 액세스해야합니다. 벡터 함수를 호출해야하는 경우에도 상관 없습니다.

당신이 사용하는 구조체/클래스

+0

더 나은 통과해야 [좋은 책] (http://stackoverflow.com/q/388242/560648). –