Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Yejom's Dev Log

[C++ 입문] 5. list, string 본문

Smart Factory Bootcamp

[C++ 입문] 5. list, string

Yejom 2024. 4. 30. 14:56
  • 리스트(list)

- 어떤 데이터를 저장할때 다음 순서의 자료가 있는 위치를 데이터에 포함시키는 방식으로 자료를 저장

#include <list> // list 헤더파일을 추가해야 사용 가능

list<int> my_list = { 1,2,3,4,5 }; // 리스트 선언

list<int> my_list(4); //int형 리스트 생성 후 크기를 4로 할당(모든 요소 0으로 초기화)

list<int> my_list(5, 1); //int형 리스트 생성 후 크기를 5로 할당(모든 요소 1로 초기화)

v.assign(5, 1);    //0~4인덱스의 값을 1로 초기화

 

  • 리스트 반복문

- 임의 접근 반복자 at(), [] 불가능, 양방향 반복자 (++,--)이용해서 탐색 (list 전용 반복자(list<int>::iterator) 사용)
- push_front(), push_back(), pop_front(), pop_back() 이용해서 끝에서 삽입, 삭제 가능
- insert(), erase() 멤버 함수를 통해서 노드 중간에서도 삽입, 삭제

// 리스트 제어용 반복자 생성
list<int>::iterator iter = my_list.begin();

// 리스트 출력
// 리스트 첫 번째 값의 포인터를 반복자로 지정하여 탐색
for (iter = my_list.begin(); iter != my_list.end(); iter++)
{
cout << *iter << endl;
}

list 반복

myList.remove(2); // 리스트 내의 2를 모두 지움.

myList.remove(isOdd); // isOdd 함수의 조건에 맞는 값(짝수)을 모두 지움.

myList.splice(위치, 넣을 요소); // 리스트 자체를 다 옮겨 붙일 수도 있음.

list1.merge(list2); // 리스트끼리 합치고 정렬함 ~ 정렬당한(?) list2의 값은 모두 지워짐.

myList.unique(2); // algorithm 과 같이 sort 해줘야 함.

  • 상수 : 절대 변하지 않는 고정값

// 변동되는 수는 안됨.

ex) const int pi ; 3.141592;


  • 문자열(string)
  • getline()
 getline(cin, str); // ab cde 
 cout << str << endl; // => ab cde 출력

 getline(cin, str, 'a'); // edc ba  
 cout << str << endl; // => edc b 출력
 // a가 나올 때까지 입력 받고, 엔터 상관없이 a 이전까지 입력한 모든 값을 출력함.
  • string 함수
string str;

str.at(index) – index위치의 문자 반환, 범위 체크O

str[index] - index위치의 문자 반환, 범위 체크X

str.front() – 가장 앞 문자 반환

str.back() – 가장 뒤 문자 반환

str.length(), .size() – 문자열 길이

str.resize(n) – n의 크기로 변환, 기존 길이보다 작으면 남는 부분 삭제, 크면 null로 채움

str.resize(n, ‘a’) – 채울때 ‘a’로 채움

str.empty() – 빈 문자열인지 확인

str.append(str2) – str2 문자열 이어 붙여줌 (+와 동일)

str.append(str2, n, m) – str2 문자열의 n index부터 m개의 문자 붙여줌

str.insert(n, str2) – n index에 str2 문자열 삽입

str.replace(n,k,str2) – n index부터 k개의 문자를 str2로 대체

str.clear() – 문자열 모두 지움

str.erase(n, m) – n index부터 m개의 문자열을 지움

str.find(str2) – str2가 포함되어있는지 확인, 찾으면 첫번째 index 반환

str.find(str2, n) – n index이후부터 find

str.substr(n) – n index부터 끝까지의 문자를 부분문자열로 반환

str.substr(n,k) – n index부터 k개의 문자열 부분문자열로 반환

str.compare(str2) – 문자열 비교, 같으면 0, str<str2 면 음수, str > str2 면 양수 반환

isdigit(c) – c가 숫자이면 true, 아니면 false

isalpha(c) – c가 영어이면 true, 아니면 false

toupper(c) – c를 대문자로 변환

tolower(c) – c를 대문자로 변환

stoi(str) – str을 int로 변경

stof(str) – str을 float로 변경

to_string(n) – n을 string으로 변경

 

☞ 실습 링크

https://github.com/YejeongKang/240429

 

GitHub - YejeongKang/240429

Contribute to YejeongKang/240429 development by creating an account on GitHub.

github.com

https://github.com/YejeongKang/240430

 

GitHub - YejeongKang/240430

Contribute to YejeongKang/240430 development by creating an account on GitHub.

github.com