vector(operator/at/front/back)

42_Cursus·2022년 5월 20일
0

STL_Containers

목록 보기
9/13

Element access

1. opeator / at 차이
2. front, back	/ begin, end 차이

1. operator / at 차이

둘다 똑같이 N번째의 요소 접근이지만 
at은 범위를 검사하여 범위 밖의 요소에 접근 시 예외처리를 발생시킵니다. (std::out_of_range)
하지만 [](operator [])는 범위검사를 하지 않으며 예외처리르 발생시키지 않습니다.
백터는 효율을 중점으로 둔 라이브러리 함수여서 보통 []를 권장하고 있으며 여러가지 방법으로 
유효성 검사가 가능하기 때문에 []를 많이 사용하고 있습니다.

1. operator

reference operator[](size_type n)
{
	return (_head[n]);
}

const_reference operator[](size_type n) const
{
	return (_head[n]);
}

2. at

reference at(size_type n)
{
	if (n >= _size)
		throw std::out_of_range(" terminating with uncaught exception of type std::out_of_range: vector");
	return (_head[n]);
}

const_reference at(size_type n) const
{
	if (n >= _size)
		throw std::out_of_range(" terminating with uncaught exception of type std::out_of_range: vector");
	return (_head[n]);
}

2. front, back / begin, end 차이

begin(), end()는 iterator를 반환. front(), back()은 reference를 반환.

1. front


reference front()
{
	return(_head[0]);
}

const_reference front() const
{
	return(_head[0]);
}

2. back

reference back()
{
	return(_head[_size - 1]);
}

const_reference back() const
{
	return(_head[_size - 1]);
}

#include <iostream>
#include <vector>

int main ()
{
  std::vector<int> myvector;

  myvector.push_back(78);
  myvector.push_back(16);

  // now front equals 78, and back 16

  myvector.front() -= myvector.back();

  std::cout << "myvector.front() is now " << myvector.front() << '\n';

  return 0;
}
profile
etudiant_42

0개의 댓글