[C++] STL 자료구조

2023. 2. 16. 16:52·C++/C++

◆std::vector<T>

▷#include <vector>를 통해 사용할수 있으며, 활용하여 오버로딩된 여러가지 기능을 편리하게 사용할 수 있다.

▷push_back()은 뒤에 자료를 추가해준다.
▷[], at(int input) 을 사용하여 배열을 사용하듯 쓸 수 있다.

▷std::sort를 통해서 정렬을 시킬수 있다.
▷begin()과 end()를 통해 길이를 알수 있다.
▷auto는 들어오는 값으로 자료형을 만들어준다.

#include <vector>
int main(){
	std::vector<int> vectors;
    
    //push_back()은 뒤에 자료를 추가해준다.
	vectors.push_back(10);
	vectors.push_back(20);
	vectors.push_back(30);
    
    //[], at(int input) 을 사용하여 배열을 사용하듯 쓸 수 있다.
    vectors[2] = 55;
    printf(vectors.at(3));
    
    //std::sort를 통해서 정렬을 시킬수 있다.
    std::sort(myvec.begin(), myvec.end());
    
    //begin()과 end()를 통해 길이를 알수 있다.
    for (std::vector<int>::const_iterator it = vectors.begin(); it != vectors.end(); it++) {
		printf("%d ", *it);
	}
    
}

 

◆순회자(iterator)

▷순회자는 기본 자료구조들이 갖고 있는 원소 탐색 객체입니다.

▷이 탐색 객체를 이용해 원소들을 차례로 가져오거나 for루프를 작성할 수 있습니다. 

▷순회자의 값을 가져올 때에는 포인터의 값을 가져오는 것처럼 사용합니다.

//begin()과 end()를 통해 길이를 알수 있다.
for (std::vector<int>::const_iterator it = vectors.begin(); it != vectors.end(); it++) {
	printf("%d ", *it);
}

 

◆auto

▷auto라는 키워드는 컴파일러가 추론 가능한 데이터 타입을 자동으로 지정해 줍니다.

//위코드와 같다. auto는 들어오는 값으로 자료형을 만들어준다.
for (auto it = vectors.begin(); it != myvec.end(); it++) {
	printf("%d ", *it);
}

 

◆std::map<A, B>

▷#include <map>에 포함되어 있다.

▷확장성있는 배열로, 키와 그에 맞는 값을 쌍으로 가질 수 있다.

▷키는 꼭 배열처럼 연속적이지 않아도 되며, 자료형에 구애받지 않는것이 장점이다.

▷map은 입력시 키를 기준으로 자동정렬된다.

▷트리형식이다.

▷[ ]에 가 연산자 오버로딩 되어 배열처럼 사용할 수 있다.

▷count(자료) : 현재 map에 같은 자료가 있는지 bool타입으로 반환한다.

▷erase(자료) : 현재 map에 지정된 키를 삭제합니다. 키를 삭제하면 키와 함께 존재하는 값도 삭제됩니다.

#include <cstdio>
#include <cstring>
#include <map>

int main(){
	std::map<std::string, std::string> studentSex;
	
    //map에 자료 추가
	studentSex["kim min su"] = "male";
	studentSex["kim ji young"] = "female";
	studentSex["kim zi min"] = "male";
	
	printf("%s\n", studentSex["kim min su"].c_str());
    //erase함수를 통해 김지민을 지운다.
	studentSex.erase("kim zi min");
	
	//존재하는지 확인하는 count함수
	studentSex.count("kim min su")==1?printf("kim min su가 존재합니다."): printf("kim min su가 존재하지 않습니다.");

	//first.c_str()로 키 값을, second.c_str로 value값을 호출한다.
	for (auto it = studentSex.begin(); it != studentSex.end(); it++) {
		printf("이름: %s ", it->first.c_str());
		printf("성별: %s\n", it->second.c_str());
	}


	return 0;
}

◆회원가입 ex)

#include <cstdio>
#include <vector>
//트리라는 자료구조로 이루어져 있다. 알파벳 순서로 자동정렬
#include <map>
#include <algorithm>
#include <string>

class Member {
private:
	std::map<std::string, std::string> members;
	int count = 0;
public:

	Member() {
		
	}
	void AddMember(std::string id, std::string password) {
		if (count == 0) {
			count++;
			members[id] = password;
			printf("id가 생성되었습니다.\n");
		}
		else {
			for (auto it = members.begin(); it != members.end(); it++) {
				if (it->first.c_str() == id) {
					printf("같은 id가 존재합니다.\n");
					return;
				}				
			}
			members[id] = password;
			printf("id가 생성되었습니다.\n");
		}
		
	}
	void printMember() {
		for (auto it = members.begin(); it != members.end(); it++) {		
			printf("id: %s password: %s\n", it->first.c_str(), it->second.c_str());
		}
	}

};

int main() {

	Member m= Member();
	m.AddMember("mekain", "1234");
	m.AddMember("kim", "1234");
	m.AddMember("mekain", "1234");
	m.AddMember("kain2", "1234");

	m.printMember();
	return 0;
}

실행 결과

 

'C++ > C++' 카테고리의 다른 글

[C++] 람다 함수  (0) 2023.02.17
[C++] 파일 입출력  (0) 2023.02.16
[C++] STL 핵심, Generic  (0) 2023.02.16
[C++] const, static, extern  (0) 2023.02.15
[C++] 문자열, 네임스페이스, 레퍼런스 타입  (0) 2023.02.13
'C++/C++' 카테고리의 다른 글
  • [C++] 람다 함수
  • [C++] 파일 입출력
  • [C++] STL 핵심, Generic
  • [C++] const, static, extern
메카인
메카인
  • 메카인
    메카인의 지식창고
    메카인
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 코딩 공부
        • TIL(Today I Learn)
        • TIL
        • 백준(C++)
        • Python
        • 알고리즘
        • 프로젝트 회고
      • C++
        • C++
        • C++ STL
        • C,C++ mCoding yotube
      • 게임개발
        • 언데드서바이벌_골드메탈_클론코딩
        • 3D_골드메탈_클론코딩
        • 유니티_문제해결
        • 게임 수학
      • Unreal 공부
        • UE5 GameDev
        • Unreal Engine 4 C++ The Ult..
      • 교재 문제 풀이
        • 운영체제
      • 정보처리기사
        • 정처기 요약
        • 정처기 오답노트
      • 학교수업
        • 데이터베이스
        • 프로그래밍 언어론
        • 리눅스 시스템
        • 네트워크
      • 일상
        • 주식
        • 독서
      • (비공개 전용)
        • memory
        • Build
        • OOP
        • Smart Pointer
        • lamda
        • 게임 수학
        • 모던 C++
        • 모던 C++ STL
        • 모던 C++ Concurrency, Paralle..
        • 책
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 블로그 관리
  • 링크

  • 공지사항

    • 공지사항 - 인생과 블로그의 목표
  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
메카인
[C++] STL 자료구조
상단으로

티스토리툴바