반응형
*개인공부를 위한 기록입니다. 잘못된 점에 대한 지적 감사드립니다.
Vector의 내용 비우는 방법: Clear
다음과 같이 사용하시면 됩니다.
std::vector<int> A = {1,2,3};
A.clear();
std::vector<int> A;
A.push_back(1);
A.push_back(10);
printf("Size of A: %ld \n", A.size()); // 2
A.clear();
printf("Size of A: %ld \n",A.size()); // 0
// 참고. ld: long unsigned int 출력
아래는 토이 프로젝트 진행 시 vector - clear 가 필요했던 경우를 예로 든 것입니다.
가령, 다음과 같은 함수가 있다고 하겠습니다.
std::vector<int> a;
void Func1(std::string fp); // File의 measurements를 읽으며 a에 저장 (vector에 push)
또 다른 File을 읽어서 vector a의 형태로 저장해야 하는 요구사항이 생겼습니다.
Func1의 input이 File이므로 다음과 같은 상황에선 문제가 발생합니다.
Func1(File1);
Func1(File2);
왜냐하면, Func1 실행 하면 File1의 measurements가 a에 저장되고, 곧바로 Func2 실행하면 a 에 연달아 File2의 measurements가 push됩니다.
이를 방지 하기 위하여 여러 방안을 고안할 수 있습니다.
1) a를 사용하기 위한 local 변수 설정
2) Func1 함수의 반환값 설정
3) push하는 지점을 파악하여 데이터 사용
등등
저는 간단하게 1)의 방법을 다음과 같이 사용하였습니다.
Func1(File1);
std::vector<int> x = a;
a.clear();
Func1(File2);
std::vector<int> y = a;
Func1 변경이나 push 지점 파악 없이 간단하게 File1, File2의 데이터를 저장하게 되었습니다.
단점으로는, 데이터 양이 많아질수록 x,y,a 세 개의 저장공간이 필요하므로 비효율적일 수 있겠습니다. 데이터 효율적으로 사용해야하는 곳에서는 다른 방안을 고안해야 할 것 같습니다.
반응형
'공부 > C++' 카테고리의 다른 글
선형 대수 - 13. 선형 부분공간 (4) | 2023.11.02 |
---|---|
선형 대수 - 8. 벡터의 정의 및 연산 (7) | 2023.09.26 |
C++과 Python의 차이, 컴파일 언어와 인터프리터 언어의 차이 (83) | 2023.09.07 |
C++, printf 이용하여 string 출력 (0) | 2022.12.08 |
make: Nothing to be don for 'all' - 해결 방법 (0) | 2022.08.23 |
리눅스 Permission denied / cannot execute binary file (0) | 2022.07.15 |
#pragma once, C++의 header (0) | 2022.07.05 |
13. C++ Reference, 참조 (0) | 2022.01.27 |