카테고리 없음

[C++] string VS vector

흑요석s 2023. 10. 5. 14:38

선언

//string
string 변수명("문자열");
string 변수명 = "문자열";

//vector
vector<타입> 변수명;
vector<타입> 변수명 = {a, b, c};
vector<int> 변수명[크기];
vector<int> v(5);                    // 5개의 원소를 0으로 초기화
vector<int> v(5, 3);				// 5개의 원소를 3으로 초기화

 

 

추가

//string

str += str 			//연산자 사용가능
str.append("붙일 문자열"); //문자열뒤에 문자열을 붙임
str.append("붙일 문자열",2,3); // n에서 시작하여 m개의 문자를 붙임
str.append(2,'문자'); // 문자열 뒤에 문자를 2개만큼 붙임

//vector
v.push_back(10);  //맨뒤에 붙임.
v1.assign (v2.assign(str_list.begin(), v2.begin() + i);

 

 

삽입

//string

a.insert(n, "str"): 문자열의 인덱스 n에 문자열을 삽입합니다.
a.replace(n, m, "str"): 문자열의 인덱스 n부터 m개의 문자를 해당 문자열로 치환합니다.


//vector

v.insert(시작위치, 갯수, 추가할 요소);

v.insert(v.begin(), 2); //맨앞에 2를 삽입
v.insert(v.begin(), 2, 4); // 맨앞에 4를 2개 삽입
v1.insert(v1.end(), v2.begin(), v2.end()); // v1 끝에 v2의 시작부터 끝 삽입

 

삭제

//string 

str.erase(n, m) : n번째 index부터 m개의 문자를 지움.
str.erase(it1, it2) : it1에서 시작하여 it2 바로 전까지의 문자열을 지움 (it1와 it2는 반복자)


//반복자(iterator)
str.begin(), str.end()


//vector

v.pop_back();                        // 마지막에 넣은 값 제거
v.erase(vec.begin()+10);             // index 10의 값을 제거
v.erase(vec.begin(), vec.begin()+5);  // index 0~5의 값을 제거
v.clear();                           //모든 값 제거

 

대체

//string 

str.substr()	str 전체를 반환
str.substr(n)	str의 n번째 index부터 끝까지의 문자를 부분문자열로 반환
str.substr(n, k)	str의 n번째 index부터 k개의 문자를 부분문자열로 반환
swap(str1, str2)	str1과 str2를 바꿔줌. reference를 교환하는 방식
 
 
 
 //vector
 vector<int> subvec(vec.begin() + 2, vec.end());  // idx 2~끝 까지 반환.

 

#include <algorithm>

sort(str.begin(), str.end());   //오름차순

sort(str.rbegin(), str.rend());  //내림차순