반응형

Vector 3 추가/삭제/변경


-swap

같은 타입의 두 벡터의 엘리먼트들을 바꾼다. 크기는 상관없다.

std::vector<int> foo(3,100) ;     // 100을 값으로 갖는 요소 3개

std::vector<int> bar(5, 200) ;    // 300을 값으로 갖는 요소 5개


foo.swap(bar);    // foo와 bar 두 개의 벡터들이 서로 바뀐다.

foo ; ==> 200 200 200 200 200

bar ; ==> 100 100 100


-push_back ; 벡터 마지막에 요소 추가. 복사(새롭게) 추가됨. 벡터 크기가 자동으로 증가. 메모리도 부족하면 자동으로 추가 할당됨.

std::vector<int> v1 ;

v1.push_back(100) ;

v1.push_back(200) ;

-pop_back ; 벡터 마지막 요소를 제거한다. 리턴값 없음.

마지막 요소값을 확인하려면 pop_back()하기 전에 back()으로 확인 가능.

while( !v1.empty() ) {

   sum+=v1.back() ;

  v1.pop_back() ;

}

v1벡터가 빌때까지 하나씩 요소들을 제거함. 요소 제거 전에 제거할 값을 얻어 총 합을 구한다.


-insert

특정 위치가 새로운 요소를 삽입한다.

insert ( const_iterator position,  const value_type & val) ;

insert( " , size_type n, const value_type &val) ;

insert(", InputIterator first, InputIterator last) ;

insert(", value_type&& val) ;

insert(", initializer_list<value_type> il) ;

리턴값 ;새로 추가한 첫번째 요소 위치 이터레이터

std::vector<int> v1(3,100) ;    // 100 100 100

std::vector<int>::iterator it ;

it = v1.begin() ;

it = v1.insert(it, 200) ;    // 200 100 100 100

v1.insert(it, 2, 300) ; // 300 300 200 100 100 100 

std::vector<int> v2(2, 400) ;    // 400 400 

v1.insert(v1.begin()+2, v2.begin(), v2.end()) ;    // 300 300 400 400 200 100 100 100 

(v2.end() 전 위치까지만 추가함).

int arr[]={501,502,503};

v1.insert(v1.begin(), arr, arr+3 ) ;    // 501 502 503 300 300 400 400 200 100 100 100 

 (arr+3 전 위치까지 추가함.)


 -erase

특정 위치 또는 위치 범위의 요소들을 제거

v1.erase(v1.begin()+5) ;    // 6번째 요소를 제거함. (인덱스는 0부터시작)

v1.erase(v1.begin(), v1.begin()+3) ;    // 앞에서 부터 3개를 제거. (두 번째 파라미터로 지정한 위치 전까지만 제거됨)

-clear ; 전체 요소 삭제


-emplace

할당과 삽입. insert는 복사하여 삽입이지만, emplace는 할당된 것을 그대로 사용하여 성능면에서는 낫다.

std::vector<int> v1={10,20,30} ;

auto it = v1.emplace(v1.begin()+1, 100) ;    // 10, 100, 20, 30

v1.emplace(it, 200) ;    // 10, 200, 100, 20, 30

v1.emplace(v1.end(), 300) ;    // 10, 200, 100, 20, 30, 300


-emplace_back

push_back()과 거의 똑같다. push_back()은 복사하여 사용하는데, emplace_back은 construct 한 것을 그대로 사용하기 때문에 성능면에서 좀 낫다.

v1.emplace_back(100);    // v1 마지막에 100 추가.





'Develop > C&CPP' 카테고리의 다른 글

List 1  (0) 2018.05.28
Array 1  (0) 2018.05.25
Vector 2  (0) 2018.05.18
Vector 1  (0) 2018.05.16
정규식으로 스트링 일부 추출하기  (0) 2018.03.10

+ Recent posts