본문 바로가기
Study/C++

[C++] vector / erase, insert, assign

by M개발자 2021. 12. 1.
반응형

erase

erase(iterator start, iterator end)

- start가 가리키는 값 삭제

- start ~ end - 1 까지 삭제

    cout << "v1 =";
    for (Iter = v1.begin(); Iter != v1.end(); Iter++)
        cout << " " << *Iter;
    cout << endl;
    //10 20 30 40 50
    
    v1.erase(v1.begin());
    cout << "v1 =";
    for (Iter = v1.begin(); Iter != v1.end(); Iter++)
        cout << " " << *Iter;
    cout << endl;
    // 20 30 40 50
    
    v1.erase(v1.begin() + 1, v1.begin() + 3);
    cout << "v1 =";
    for (Iter = v1.begin(); Iter != v1.end(); Iter++)
        cout << " " << *Iter;
    cout << endl;
    // 20 50

insert

1) insert(iterator it, element e)

- it 위치에 e 삽입

2) insert( iterator it, size_type count, const Type& value)

- it 위치에 value count개 삽입

3) insert( iterator  it, InputIterator first, InputIterator last);

- it 위치에 first부터 last까지 삽입

vector <int> v1;
	vector <int>::iterator Iter;

	v1.push_back(10);
	v1.push_back(20);
	v1.push_back(30);

	cout << "v1 =";
	for (Iter = v1.begin(); Iter != v1.end(); Iter++)
		cout << " " << *Iter;
	cout << endl;
    // 10 20 30
    
    // v1[1]에 40 추가
	v1.insert(v1.begin() + 1, 40);
	cout << "v1 =";
	for (Iter = v1.begin(); Iter != v1.end(); Iter++)
		cout << " " << *Iter;
	cout << endl;
    // 10 40 20 30
    
    // v[2] ~ v[5]에 50 추가
	v1.insert(v1.begin() + 2, 4, 50);
	cout << "v1 =";
	for (Iter = v1.begin(); Iter != v1.end(); Iter++)
		cout << " " << *Iter;
	cout << endl;
    // 10 40 50 50 50 50 20 30

	// 백터 복사
	const auto v2 = v1;
    // v1[1]에 v2[1] ~ v2[4] 추가
	v1.insert(v1.begin() + 1, v2.begin() + 1, v2.begin() + 4);
	cout << "v1 =";
	for (Iter = v1.begin(); Iter != v1.end(); Iter++)
		cout << " " << *Iter;
	cout << endl;
    // 10 40 50 50 50 40 50 50 50 50 20 30

assign

void assign(size_type count, const Type& value);

- count만큼 value 추가 (3, 7) → 7 7 7

void assign(InputIterator first, InputIterator last);

- first부터 last까지 복사추가

	vector <int> v1, v2, v3;
	vector <int>::iterator Iter;
	v1.push_back(10);
	v1.push_back(20);
	v1.push_back(30);
	v1.push_back(40);
	v1.push_back(50);

	cout << "v1 =";
	for (Iter = v1.begin(); Iter != v1.end(); Iter++) cout << " " << *Iter;
	cout << endl;
    // 10 20 30 40 50
    
	cout << "v2 =";
	for (Iter = v2.begin(); Iter != v2.end(); Iter++) cout << " " << *Iter;
	cout << endl;
    // 
    
	cout << "* * * assign * * *" << endl;
	v2.assign(v1.begin(), v1.end() - 3);
	cout << "v1 =";
	for (Iter = v1.begin(); Iter != v1.end(); Iter++) cout << " " << *Iter;
	cout << endl;
	// 10 20 30 40 50 
    
	cout << "v2 =";
	for (Iter = v2.begin(); Iter != v2.end(); Iter++) cout << " " << *Iter;
	cout << endl;
    // 10 20

	cout << "* * * assign 2 * * *" << endl;
	v3.assign(3, 7);
	cout << "v3 =";
	for (Iter = v3.begin(); Iter != v3.end(); Iter++) cout << " " << *Iter;
	cout << endl;
    // 7 7 7

	int k = v1.at(3);
	cout << "k : " << k << endl;
    // 40
	v1.at(2) = 100;
	cout << "v1.at(2) : " << v1.at(2) << endl;
    // 100
	cout << "v1 =";
	for (Iter = v1.begin(); Iter != v1.end(); Iter++) cout << " " << *Iter;
    // 10 20 100 40 50
반응형

'Study > C++' 카테고리의 다른 글

[C++] file IO  (0) 2021.08.21

댓글