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 출력
}

+ Recent posts