◆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 |