티스토리 뷰
STL
Standard Templete Library의 줄임말이다. c++ 표준 라이브러리 중 하나로 많은 제네릭 클래스와 제네릭 함수를 포함하고 있다.
※제네릭 클래스란 정해지지 않은 타입을 선언해 사용자가 지정한 타입에 맞춰 클래스를 사용할 수 있다. 제네릭 함수도 마찬가지.
리스트, 큐, 스택, 맵, 벡터 등 컨테이너를 포함하고 있다.
※컨테이너는 클래스 템플릿으로 변수를 선언할 때 타입을 명시해 사용한다. 데이터를 담아두는 자료 구조를 표현한 클래스이다.
vector,deque,list,set,map,stack,queue 등이 있음
iterator
컨테이너 원소에 접근할 때 사용하는 포인터.
iterator : 다음 원소로 전진
reverse_iterator : 지난 원소로 후진
Vector
가변 길이 배열을 구현한 제네릭 클래스 -> 벡터의 길이를 고민할 필요가 없음
원소의 저장,삭제,검색 가능,인덱스로 접근
push_back(element) : vector 마지막에 element 추가
at(int index) : index 위치의 원소에 대한 참조 리턴
begin() : 벡터의 첫 번째 원소에 대한 참조 리턴
end() : 벡터의 끝 을 가리키는 참조 리턴
empty() : 벡터가 비어 있으면 true 리턴
erase(iterator it) : 벡터에서 it가 가리키는 원소 삭제, 삭제 후 자동으로 벡터 조절
insert(iterator it,element) : 벡터 내 it 위치d에 element 삽입
size() : 벡터에 들어 있는 원소의 개수 리턴
operator[]() : 지정된 원소에 대한 참조 리턴
operator=() : 이 벡터를 다른 벡터에 치환(복사)
iterator(반복자) 사용
컨테이너의 원소를 가리키는 포인터
구체적인 컨테이너를 지정하여 반복자 변수 생성
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
vector<int>::iterator it;
for(it = v.begin();it != v.end();it++){
int n = *it; // it가 가리키는 원소 값 리턴
n = n*2;
*it = n;
}
for(it = v.begin();it != v.end();it++)
cout << *it << "";
cout << endl;
}
map 컨테이너
('키','값')의 쌍을 원소로 저장하는 제네릭 컨테이너
키로 값을 검색
insert(pair<> &element) : 맵에 키와 값으로 구성된 pair 객체 element 삽입
at(key_type& key) : 맵에서 키 값에 해당하는 값 출력
begin() : 맵의 첫 번째 원소에 대한 참조 리턴
end() : 맵의 끝을 가리키는 참조 리턴
empty() : 맵이 비어 있으면 true 리턴
find(key_type& key) : 맵에서 키 값에 해당하는 원소를 가리키는 iterator 리턴
erase(iterator it) : 맵에서 itr가 가리키는 원소 삭제
size() : 맵에 들어 있는 원소의 개수 리턴
operator[key_type&key]() : 맵에서 키 값에 해당하는 원소를 찾아 값 리턴
operator=() : 맵 치환
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main(){
map<string,string> dic;
dic.insert(make_pair("love","사랑"));
dic.insert(make_pair("apple","사과"));
dic["cherry"] = "체리";
cout << "저장된 단어 개수 : " <<dic.size() << endl;
string eng;
while(true){
cout << "찾고 싶은 단어>> ";
getline(cin,eng);
if(eng == "exit")
break;
if(dic.find(eng) == dic.end())
cout << "없음" << endl;
else
cout << dic[eng] << endl;
}
cout << "종료 합니다" << endl;
}
auto 사용하기
컴파일러에게 변수선언문에서 추론하여 타입을 자동 선언하도록 지시
복잡한 변수 선언을 간소하게, 긴 타입 선언 시 오타를 줄임
auto pi = 3.14 //pi의 타입을 자동으로 double로 수정
auto n = 3 //n을 자동으로 int로 수정
auto *p = &n; //변수 p는 int* 타입으로 추론
int square(int x){
return x*x;
}
auto ret = square(3); //변수 ret은 int 타입으로 추론
vector<int>::iterator it;
for(auto it = v.begin();it != v.end();it++) // it의 타입을 간단히 선언
cout << *it << endl;
#include<iostream>
#include<vector>
using namespace std;
int square(int x){
return x*x;
}
int main(){
auto c = 'a';
auto pi = 3.14;
auto ten = 10;
auto *p = &ten;
cout << c << " " << pi << " " << ten << " " << *p << endl;
auto ret = square(3);
cout << *p << " " << ret << endl;
vector<int> v = {1,2,3,4,5};
vector<int>::iterator it;
for(it = v.begin();it != v.end();it++)
cout << *it <<" ";
cout << endl;
}
※컴파일 오류
auto에 대해 warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions] 이런 오류가 무조건 나온다.
이는 컴파일 버전의 차이이다.
g++ -std=c++11 -o 파일명 파일명.c 이런식으로 컴파일 하자.
'c++' 카테고리의 다른 글
c++ 공유 메모리 사용 (0) | 2022.05.04 |
---|---|
C++ filesystem 사용 (0) | 2022.03.15 |
C++ this,string 객체,string 배열 (0) | 2020.07.06 |
C++ 객체포인터,객체 배열, 동적 할당 (0) | 2020.07.03 |
C++ 소멸자,접근 지정자, 인라인 함수,구조체 (0) | 2020.07.02 |
- Total
- Today
- Yesterday
- many-to-many
- Python
- SOME/IP
- SVM
- many-to-one
- PCA
- CAN-FD
- HTML
- cuckoo
- problem statement
- AVB
- 크로스 엔트로피
- 단순선형회귀
- 회귀
- automotive ethernet
- 이상탐지
- 머신러닝
- 논문 잘 쓰는법
- Ethernet
- AE
- 차량 네트워크
- automotive
- 케라스
- 딥러닝
- porks
- json2html
- 로지스틱회귀
- one-to-many
- 차량용 이더넷
- AVTP
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |