front()와 back() 함수는 STL 컨테이너(벡터, 리스트, 데크, 문자열 등)에서 첫 번째 요소와 마지막 요소에 접근할 때 사용하는 함수다. 두 함수 모두 상수 시간 O(1)에 동작하며, 직접 인덱스를 사용할 필요 없이 직관적으로 가장 앞과 뒤의 요소를 참조할 수 있는 장점이 있다.
T& front();
const T& front() const;
T& back();
const T& back() const;
front(): 컨테이너의 첫 번째 요소에 대한 참조를 반환한다.back(): 컨테이너의 마지막 요소에 대한 참조를 반환한다.const 버전은 읽기 전용 참조를 반환하며, non-const 버전은 요소를 수정할 수 있다.front()와 back() 함수는 다음 컨테이너에서 사용할 수 있다:
std::vectorstd::liststd::dequestd::string주의:
std::array에서도 사용할 수 있지만,std::set,std::map,std::unordered_set,std::unordered_map에서는 사용할 수 없다.
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {10, 20, 30, 40};
std::cout << "첫 번째 요소: " << vec.front() << std::endl;
std::cout << "마지막 요소: " << vec.back() << std::endl;
// 요소 수정
vec.front() = 100;
vec.back() = 400;
std::cout << "수정 후 첫 번째 요소: " << vec.front() << std::endl;
std::cout << "수정 후 마지막 요소: " << vec.back() << std::endl;
return 0;
}
출력:
첫 번째 요소: 10
마지막 요소: 40
수정 후 첫 번째 요소: 100
수정 후 마지막 요소: 400
#include <iostream>
#include <list>
int main() {
std::list<int> lst = {5, 15, 25, 35};
std::cout << "첫 번째 요소: " << lst.front() << std::endl;
std::cout << "마지막 요소: " << lst.back() << std::endl;
// 요소 수정
lst.front() = 50;
lst.back() = 350;
std::cout << "수정 후 첫 번째 요소: " << lst.front() << std::endl;
std::cout << "수정 후 마지막 요소: " << lst.back() << std::endl;
return 0;
}
출력:
첫 번째 요소: 5
마지막 요소: 35
수정 후 첫 번째 요소: 50
수정 후 마지막 요소: 350
#include <iostream>
#include <string>
int main() {
std::string str = "hello";
std::cout << "첫 번째 문자: " << str.front() << std::endl;
std::cout << "마지막 문자: " << str.back() << std::endl;
// 문자 수정
str.front() = 'H';
str.back() = '!';
std::cout << "수정 후 문자열: " << str << std::endl;
return 0;
}
출력:
첫 번째 문자: h
마지막 문자: o
수정 후 문자열: Hell!
front() 또는 back()을 호출하면 정의되지 않은 동작(UB)이 발생한다.#include <iostream>
#include <vector>
int main() {
std::vector<int> vec;
if (!vec.empty()) {
std::cout << "첫 번째 요소: " << vec.front() << std::endl;
std::cout << "마지막 요소: " << vec.back() << std::endl;
} else {
std::cout << "벡터가 비어 있습니다." << std::endl;
}
return 0;
}