(수근수근)
[C++]선형자료구조 - vector 본문
Vector
- 개체들을 연속적이 메모리에 저장
- sequence container 에 속한다.
- 동적으로 확장 축소가 가능한 dynamic array이다.
- 원소를 컨테이너의 끝에 삽입/제거 하는 것이 빠르다
Vector method
https://hyeonstorage.tistory.com/324
What is Iterator?
https://eehoeskrap.tistory.com/263
- 컨테이너에 저장되어있는 원소들은 참조할 때 사용
- 요소의 값 확인, 컨테이너 안에 요소들은 이동할 수 있는 연산 제공
- 포인터는 널을 가질 수 있는데 이는 아무것도 가리키지 않는다는 의미
- end()함수는 끝이 아니다. 맨 마지막의 원소 다음번의 원소
- 아무 원소도 없는 컨테이너의 begin()과 end()는 같다
Vector 예제 실습
#include<iostream>
#include<vector>
#include<string>
#include<stdio.h>
using namespace std;
/**
5명의 학생 중 가장 높은 학생의 점수 출력하기
*/
//1. 선언 및 초기화
vector<int> vScore;
int maxFind(vector<int> v){
printf("vector size : %d", v.size());
int temp = v.at(0);
vector<int>::iterator iter;
for(iter =v.begin();iter!=v.end();++iter){
if(temp<*iter){
temp = *iter;
}
}
return *iter;
}
void main(){
//2. 사이즈 저장
vScore.reserve(5); // 벡터메모리에 공간할당
//3. 자료 삽입
vScore.push_back(10);
vScore.push_back(50);
vScore.push_back(70);
vScore.push_back(80);
vScore.push_back(90);
//4. 최대값 찾기
int result = maxFind(vScore);
printf("점수 최대값 : %d", result);
}
이렇게 실행했더니 런타임 에러 메시지를 봤다..
이유? end() 는 마지막 원소가 아니라 맨 마지막의 다음번의 원소이다. 이것을 역참조 (deferenced)해선 안된다!
int maxFind(vector<int> v){
printf("vector size : %d", v.size());
int temp = *max_element(v.begin(),v.end());
return temp;
}
소스변경해서 해결...
'C++' 카테고리의 다른 글
[C++] 기초 관련 용어 (0) | 2020.05.18 |
---|---|
Linking / Linker (0) | 2020.05.15 |
암호화 알고리즘 AES-256 (0) | 2020.05.07 |
HashMap 자료구조 study (0) | 2020.04.06 |
[C++] 상속 공부 (0) | 2020.03.25 |
Comments