1.문자열 처리
● 숫자가 string 형태로 되어 있을때, int 로 바꾸고 싶다면 '0'을 빼주기
● .find 를 했을 때 못찾으면 string::npos(-1)을 반환
● .erase(index,size) 삭제할 index ~ size까지 size없으면 그자리에 글자 삭제
문자열 자르기
1. string 클래스 사용
#include <string>
using namespace std;
int main() {
string lines = "hi,my,name,is";
size_t previous = 0, current;
current = lines.find(','); //구분자, 찾지못한경우 npos반환
while(current !=string::npos) {
string substring = lines.substr(previous, current - previous);
cout << substring << " ";
previous = current + 1;
current = lines.find(',', previous);
}
cout << lines.substr(previous, current - previous);
return 0;
}
2. sstream 클래스 사용
stringstream ss; //빈칸을 경계로 string 나눔
for (auto record : records) {
ss.str(record); //records에서 record string 형태로 가져오기
string time, number, status; //record string에서 나눠줄 변수들
ss >> time >> number >> status;
parks[number].push_back(time);
ss.clear();
}
2.vector
vector 선언 및 초기화
#include <vector>
int main(){
vector<int> v; //벡터 선언
vector<int> v(n,x); //x로 n개의 원소 생성한 벡터 선언
}
vector 요소 삭제
#include <vector>
int main(){
v.erase(v.begin()+index) //index번째의 원소 삭제
v.erase(v.begin() + s, v.begin() + e) //s 부터 e-1까지의 인덱스 삭제
}
vector 삽입
v.insert( v.begin(), 100 ); // 100을 제일 처음에 추가
v.insert( v.begin()+5, 5 ); // 5를 (처음+5)에 추가
v.insert( v.end(), 9 ); // 9를 제일 마지막에 추가
v.push_back(5); 5를 제일 마지막에 추가
2. map
※ map vs unordered_map
vs | map | unordered_map |
정렬 | 오름차순 자동 정렬 | 정렬안함 |
중복허용 | 비허용 | 비허용 |
탐색속도 | O(logN) | O(1) |
문자열 길이가 길고 데이터가 크지 않을 때 | 보다 유리 | 보다 불리 |
map 삽입
um[변수명]= 변수값;
반복문 순회
for(auto it: um)
{
// key-value의 특성에 따라 접근하면 된다.
std::cout << "key : " << it->first << std::endl; // 문자열 A, B 출력
std::cout << "value: " << it->second << std::endl; // 정수형 1111, 2222 출력
}