C++primer 학습 노트 제3 장 문자열,벡터,배열

6037 단어 C++학습 노트
성명 사용
  • 특정한 네 임 스페이스 를 사용 합 니 다.예 를 들 어  using std::cin 은 네 임 스페이스 std 의 이름 cin 을 사용 한 다 는 뜻 이다.
  • 개의 문서 에는 using 성명 이 포함 되 어 서 는 안 된다.

  • string
  • 표준 라 이브 러 리 형식 string 은 가 변 길이 의 문자 순 서 를 표시 합 니 다.
  • #include ,그리고  using std::string;
  • string 대상:문자열 의 액면가 와 다 릅 니 다.
  • s.emtpy() 이 비어 있 는 지 여부;
  • s.size() 사이즈;
  • string::size_typesize 의 유형 을 정의 했다.
  • +:문자열 연결;
  • str[i]  왼쪽 값 으로 쓸 수 있 습 니 다.
  • getline(is, s)  is 에서 한 줄 을 읽 어 s 에 게 부여 하고 is 으로 돌아 갑 니 다.
  • , >=  사전 의 순 서 를 문자 로 비교 하여 대소 문자 에 민감 합 니 다.
  • string io:
  • 읽 기 동작 을 수행 합 니 다.다음 공백 이 발생 할 때 까지 시작 하 는 공백(빈 칸,줄 바 꿈,탭 문자 포함)을 무시 합 니 다.
  • getline:공백 부 호 를 포함 하여 전체 줄 을 읽 습 니 다.

  • 문자열 의 액면가 와 string 은 서로 다른 유형 입 니 다.
  • 문자열 옮 겨 다 니 기:사용 범위 for(range for)문장:  for (auto c: str) 또는  for (auto &c: str) 참조 로 문자열 의 문 자 를 직접 변경 합 니 다.
  • ctype.h vs.cctype:C++는 c 의 표준 라 이브 러 리 를 수 정 했 습 니 다.이름 은'h'를 제거 하고 앞 에'c'를 추가 합 니 다.

  • 대상 초기 화
  • 초기 화 string:
  • 기본 초기 화:string s1; 빈 문자열 입 니 다.
  • 복사 초기 화:string s1 = s2;  s1s2 의 사본 이다.
  • 직접 초기 화:
  • string s1 = "value"; 등가  string s1("value");
  • string s1(n, 'c'); 에서 n 개의'c'문자 로 구 성 된 문자열 로 초기 화 합 니 다.


  • 복사 초기 화:등호 = 을 사용 하여 변 수 를 초기 화하 고 컴 파일 러 는 등호 오른쪽 에 있 는 초기 값 을 새로 만 든 대상 에 복사 합 니 다.
  • 직접 초기 화:등 호 를 사용 하지 않 고 명시 적 으로 입력 값 을 초기 화 합 니 다.

  • vector(임의의 형식의 동적 배열 을 저장 하여 데 이 터 를 증가 하고 압축 할 수 있 습 니 다)
  • vector 는 용기 이자 템 플 릿 입 니 다.
  • #include  그리고  using std::vector;
  • 용기:기타 대상 포함.
  • 클래스 템 플 릿:자 체 는 클래스 가 아니 지만 인 스 턴 트 를 실례 화하 여 하나의 클래스 를 만 들 수 있 습 니 다.  vector 은 템 플 릿 입 니 다.  vector 은 한 유형 이다.
  • 은 클래스 템 플 릿 이름 뒤의 괄호 에 형식 을 넣 어서 종 류 를 지정 합 니 다.예 를 들 어 vector ivec.
  • 목록 초기 화:  vector v = {"a", "an", "the"}  (C++11)
  • v.push_back(e)  끝부분 에 원 소 를 추가 합 니 다.
  • 범위 for 문 구 는 옮 겨 다 니 는 서열 의 크기 를 바 꾸 어 서 는 안 됩 니 다.
  • 아래 표 시 는 v[i] 을 조작 하고 이미 존재 하 는 요 소 를 정확하게 알 고 아래 표 시 를 수행 할 수 있 습 니 다.
  • v.emtpy()  비어 있 는 지 여부 입 니 다.
  • v.size()  사이즈

  • 교체 기 iterator
  • vector::iterator iter
  • v.begin(); 첫 번 째 요 소 를 가리 키 는 교체 기 를 되 돌려 줍 니 다.
  • v.end(); 마지막 요 소 를 가리 키 는 다음(보초병,꼬리)의 교체 기 를 되 돌려 줍 니 다.
  • 용기 가 비어 있 으 면,  begin() 과  end() 은 같은 교체 기 를 되 돌려 주 었 고 모두 꼬리 교체 기 였 다.
  • 은 인용 부호 * 을 사용 하여 교체 기 가 가리 키 는 요 소 를 방문 합 니 다.
  • 은 교체 기와 != 을 사용 하 는 습관(범 형 프로 그래 밍)을 길 렀 다.
  • 용기:다른 대상 을 포함 할 수 있 습 니 다.그러나 모든 대상 은 유형 이 같 아야 한다.
  • 교체 기(iterator):모든 표준 용기 에는 자신의 교체 기 가 있 습 니 다.C++는 아래 표 시 된 요소 가 아 닌 교체 기 를 사용 하 는 경향 이 있 습 니 다.
  • const_iterator:용기 안의 요 소 를 읽 을 수 있 을 뿐 변경 할 수 없습니다.
  • 화살표 연산 자:인용+구성원 방문,it->mem 등가  (*it).mem
  • difference_type:두 개의 교체 기 대상 간 의 거 리 를 충분히 저장 할 수 있 도록 합 니 다.마이너스 가 될 수 있 습 니 다.

  • 표준 용기 교체 기의 연산 자
    연산 자
    해명 하 다.*iter
    교체 기 iter 이 가리 키 는 요소 의 인용 을 되 돌려 줍 니 다.iter->mem
    등가(*iter).mem ++iter 으로 용기 의 다음 요 소 를 표시 합 니 다.iter --iter 으로 용기 의 이전 요 소 를 표시 합 니 다.iter
    두 개의 교체 기 가 같 는 지 아 닌 지 를 판단 하 다.
    배열
  • 은 vector 의 저급 판 에 해당 하 며 길이 가 고정 되 어 있 습 니 다.
  • 초기 화:iter1 == iter2,길 이 는 const 표현 식 또는 쓰 지 않 고 컴 파일 러 가 스스로 추측 하도록 해 야 합 니 다.
  • 배열 은 다른 배열 에 직접 할당 할 수 없습니다.
  • 배열 아래 표 시 된 유형:char input_buffer[buffer_size]; 。
  • 문자 배열 의 특수성:끝 에 빈 문자 가 있 습 니 다.예 를 들 어  size_t  。
  • 배열 로 초기 화  char a[] = "hello"; :  vector  。

  • 배열 과 포인터
  • 은 배열 을 사용 할 때 컴 파일 러 는 보통 지침 으로 변환 한다.
  • 표준 라 이브 러 리 유형 이 한정 적 으로 사용 하 는 아래 표 지 는 반드시 기호 가 없 는 유형 이 어야 하 며,내 장 된 아래 표 지 는 마이너스 값 을 처리 할 수 있다.
  • 포인터 가 배열 에 접근 합 니 다.표현 식 에서 배열 이름 을 사용 할 때 이름 은 배열 을 가리 키 는 첫 번 째 요소 의 지침 으로 자동 으로 변 환 됩 니 다.

  • C 스타일 문자열
  • C 에서 물 려 받 은 문자열 입 니 다.
  • 빈 문자 로 끝 냅 니 다('\0').
  • int a[] = {1,2,3,4,5}; vector v(begin(a), end(a));  :  、  strlen(p)  、  strcmp(p1, p2)  、  strcat(p1, p2)  。
  • 은 대부분의 응용 에 있어 표준 라 이브 러 리 를 사용한다.  strcpy(p1, p2) 은 C 스타일 문자열 을 사용 하 는 것 보다 안전 하고 효율 적 입 니 다.
  • 획득  string  적중 하 다  string  :  cstring  。

  • 다 차원 배열
  • 다 차원 배열 의 초기 화:  const char *str = s.c_str();
  • 사용 범위 for 문 구 를 사용 할 때 가장 안쪽 순환 을 제외 하고 모든 순환 의 제어 변 수 는 참조 유형 이 어야 합 니 다.

  • 포인터 vs 인용
  • 인용 은 항상 특정한 대상 을 가리 키 며 인용 을 정의 할 때 초기 화 되 지 않 은 것 은 잘못 입 니 다.
  • 인용 할당 값 은 이 인용 과 연 결 된 대상 의 값 을 수정 하 는 것 이지 인용 이 다른 대상 과 연 결 된 것 이 아 닙 니 다.

  • 동적 배열
  • 사용  int ia[3][4] = {{0,1,2,3}, ...} 과  new 표현 과 c 에서 deletemalloc 과 유사 한 기능,즉 더미(자유 저장 소)에서 저장 공간 을 분배 하 는 것 이다.
  • 정의:  free  10 은 하나의 변수 로 대 체 될 수 있다.
  • 석방:  int *pia = new int[10];,delete [] pia; 을 잊 지 않도록 주의 하 세 요.

  • 좋은 웹페이지 즐겨찾기