[완료]c++ STL에 관한 질문입니다.
글쓴이: purenous / 작성시간: 수, 2007/03/28 - 4:38오후
일단 제가 저장하고 싶은 데이터는 이런 형태입니다.
1,2,12,20,4,5
22
43,6,7,9
34,3,5
.
.
.
3,8,16,42
각 라인의 엘리먼트 수와, 라인 수는 정해진 크기가 없습니다.
대략 라인당 엘리먼트 수는 100개 이하, 라인수는 10만줄이 될지 100만줄이 될지도 모르는 상황이구요;;
아무튼 이런 데이터가 담겨있는 텍스트 파일에서 데이터를 효과적으로 저장하기 위해
STL을 이용해 구조체 vector나 구조체 list를 써보려고 하는데요.
(삽입/삭제 동작보단 서칭이 많긴 한데...
인덱스가 없으면 또 조작하기가 힘들 것 같아서 되도록이면 vector를 사용하고 싶습니다.)
구조체 멤버들에 접근하는 방법을 도무지 모르겠습니다.
도트로 접근할 수 있으면 편할텐데..ㅜ.ㅜ
struct data {
vector(string) item; 꺽쇠가 안먹는군요;;
//혹은
//string item[100];
};
대략 구조체 멤버는 이렇게..하고
vector(data) v;
구조체 vector로부터 멤버에 접근하기 위해서 어떤 방법을 쓰면 좋은지 좀 알려주세요ㅠ.ㅠ
Forums:
iterator나 front() back()
iterator나
front()
back() 을 이용해보세요....
------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!
------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!
iter->item[i] 이런 식으로 말입니까?
한번 해봐야겠네요..될려나;;
벡터의 begin()은
벡터의 begin()은 원소가 없는 경우에는 잘못된 이터레이터를 돌려줍니다.
---- 절취선 ----
http://blog.peremen.name
접근을 해야 원소를 미리 할당해놓든지 말든지 할텐데;;
이거 원 어떻게 해결해야할지 막막하네요;;
집어넣는건 pushback()
집어넣는건 pushback() 을 이용합니다.
vector의 member 함수들의 목록을 일단 먼저 살펴보심이 어떠실런지요;;;
http://www.cplusplus.com/reference/stl/vector/
------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!
------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!
예 그 집어넣기
예 그 집어넣기 전에
'어디'에 집어넣어(push_back())라고 명령을 해야하는데
그 '어디'를 지정하는 방법을 모르겠어요ㅠ.ㅠ
구조체 vector가 아니라면 iterator 쓸 필요도 없이
선언해놓고 v.push_back()하면 간단하게 들어가지지만;;
vector v의 구조체 멤버인 item에 집어넣는 방법을;;
응용력이 부족한가봐요 아무래도;;
해당 구조체를 하나
해당 구조체를 하나 선언하십시오.
그리고 그 구조체에 값을 설정하고 vector에 밀어 넣으시면(?) 됩니다.
stl vector는 삽입시에 객체를 자동으로 복사해서 넣으니 굳이 new로 객체를 새로 생성할 필요도 없습니다.
나중에 값을 변경하고자 할땐 iterator 나 front,back,at과 같은 함수로
특정 위치의 구조체를 가져다가 값을 변경하시면 되겠습니다.
------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!
------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!
vector 의 begin 은
vector 의 begin 은 데이터가 없을 경우 end 를 리턴합니다.
그래서
는 안전한 코드입니다.
윗분이 말씀하신 건
윗분이 말씀하신 건 일단 유효한 메모리 공간을 얻은 후에
iterator가 사용가능하다는 말씀같아요..
(뭔가 실제로 값이 하나 들어가서..)
그리고나서는 값을 지워서 빈 벡터가 되더라도
접근은 할 수 있을 듯
그리고 저라면 그냥
그리고 저라면 그냥 vector에 한줄씩 넣고
한줄씩 꺼내서 tokenize 해서 쓰는게 나을거 같습니다.
(안그래도 그와 비슷하게 만들었던 적도 있기도 하고....)
------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!
------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!
실은 데이터에서
실은 데이터에서 assosiation rule 추출하는 과제인데요^^;
엄청난 서칭과 비교연산을 하느라 안그래도 n3 이상 나오는 알고리즘인데..
서칭할 때마다 매번 토크나이징을 하면..대략 난감한 상황이;;
일단 메모리에 잘 정리된 데이터가 다 올라와있는 상태에서 하고 싶습니다;;
마지막에 가르쳐주신 방법으로 하면 어떻게 잘 될 것도 같아요. ㅋ
근데 지금 막 짜보니깐 어디가 잘못된건지 에러나네요;;
저로서는 이정도의
저로서는 이정도의 예제를 올려드리는 방법밖에 없을 거 같습니다.
------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!
------------------------------------------------------------
이 멍청이~! 나한테 이길 수 있다고 생각했었냐~?
광란의 귀공자 데코스 와이즈멜 님이라구~!
헛! 감사합니다!!!
헛! 감사합니다!!!
댓글 달기