1) 구조
2) 사용법
vector<int> v; //int 타입 백터 생성
vector<int> v = { 1,2,3 }; //생성 후 초기화
vector<int> v[10]; //int타입 백터 배열 생성
vector<int> v[] = { {1,2},{3,4} }; //int형 백터 배열 생성(행은 가변이지만 열은 고정)
vector<vector<int>> v; //2차원 백터 생성(행과 열 모두 가변)
vector<int> v(5); //5개의 원소를 0으로 초기화
vector<int> v(5, 3); //5개의 원소를 3으로 초기화
vector<int> v2(v); //벡터 v를 복사하여 벡터 v2 생성
원소 삽입
v.push_back(10); //맨 뒤에 추가
vector<int>::iterator it = v.begin();
it = v.insert(it, 2); //중간에 삽입
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
vector<int> v;
v.push_back(10);
vector<int>::iterator it = v.begin();
it = v.insert(it, 2);
it = v.begin();
while (it != v.end())
{
cout << *it << endl;
it++;
}
return 0;
}
원소 삭제
v.pop_back(); //맨 뒤 원소 삭제
v.erase(v.begin() + 1); //위치 원소 삭제
v.clear(); //모든 원소 삭제
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
vector<int> v;
cout << "삽입" << endl;
v.push_back(10);
vector<int>::iterator it = v.begin();
it = v.insert(it, 2);
it = v.insert(it, 3);
it = v.insert(it, 4);
it = v.begin();
while (it != v.end())
{
cout << *it << endl;
it++;
}
cout << "삭제" << endl;
v.pop_back();
v.erase(v.begin() + 1);
it = v.begin();
while (it != v.end())
{
cout << *it << endl;
it++;
}
cout << "전체 제거" << endl;
v.clear();
it = v.begin();
while (it != v.end())
{
cout << *it << endl;
it++;
}
return 0;
}
Vector 크기 구하기
v.size(); //vector의 원소 갯수
v.capacity; //vector의 물리적 크기
1) 입출력
cin>>str;
: 공백 이전 까지의 문자열을 입력받음cout<<str;
: 문자열 출력getline(cin, str);
: '\n'이전까지의 문자열을 입력받음(공백 포함)getline(cin, str, 'a')
: 'a'문자 이전까지의 문자열을 입력받음2) string class 생성
string str;
: 빈 문자열 str 생성
string str = "abcdef"
: "abcdef"로 선언된 str 생성
string str("abcdef")
: "abcdef"로 선언된 str 생성
string str2(str1)
: str1 문자열을 복사한 str2 생성
char s[ ] = {'a', 'b', 'c', 'd', 'e', 'f'}; string str(s)
: c의 문자열과 호환
string *str = new string("abcdef")
: new를 이용한 동적할당
3) string 클래스 연산자 활용
str1 = str1 + str2;
4) 멤버 함수
str.at(index)
: index 위치와 문자 반환, 유효한 범위인지 체크str[Index]
: index 위치의 문자 반환, 유요한 범위인지 체크하지 않음(속도 빠름)str.front()
: 문자열의 가장 앞 문자 반환str.back()
: 문자열의 가장 뒤 문자 반환str.lenght()
, str.size()
: 문자열 길이 반환str.capacity()
: 문자열이 사용중인 메모리 크기 반환str.resize(n)
: stirng을 n의 크기로 만듦str.empty()
: str이 빈 문자열인지 확인str.append(str2)
: str 뒤에 str2 문자열을 이어 붙여줌('+'와 같음)str.append(str2, n, m)
: str 뒤에 'str2의 n index부터 m개의 문자'를 이어 붙여줌str.append(n, 'a')
: str 뒤에 n개의 'a'를 이어 붙여줌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.push_back(c)
: str의 맨 뒤에 c 문자를 붙여줌str.pop_back()
: str의 맨 뒤의 문자를 제거str.assign(str2)
: str에 str2 문자열을 할당str.find("abcd")
: "abcd"가 str에 포함되어있는지를 확인. 찾으면 해당 부분의 첫번째 index를 반환str.find("abcd", n)
: n번째 index부터 "abcd"를 findstr.substr()
: str 전체를 반환str.substr(n, k)
: str의 n번째 index부터 k개의 문자를 부분문자열로 반환str.compare(str2)
: str과 str2가 같은지를 비교. 같다면 0, str<str2 인 경우 음수, str>str2 인 경우 양수를 반환swap(str1, str2)
: str1과 str2를 바꿔줌. reference를 교환하는 방식isdigit(c)
: c 문자가 숫자이면 true, 아니면 false를 반환 isalpha(c)
: c 문자가 영어이면 true, 아니면 false를 반환toupper(c)
: c 문자를 대문자로 변환tolower(c)
: c 문자를 소문자로 변환map<string, int> m;
m.insert({"Cam",300});
m.erase(m.begin()+2); //위치를 사용해 삭제
m.erase("Cam"); //key값을 사용해 삭제
m.erase(m.begin(), m.end()); //전체 범위 삭제
m.clear();
2) 데이터 찾기
map<string, int> m;
if(m.find("Cam") !-m.end())
{
cout<<"find"<<endl;
}
else
{
cout<<"not find"<<endl;
}
3) 데이터 접근
for(auto iter = m.begin(); iter != m.end(); iter++)
{
cout<<iter->first<<" "<<iter->second<<endl;
}
1) 데이터 접근
for(pair<string, int> elem : um)
{
cout<< "key: "<<elem.first<<"value : "<<endl;
}
1) 데이터 추가: queue.push(element)
2) 데이터 삭제: queue.pop()
3) 첫번째 데이터 반환: queue.front()
4) 마지막 데이터 반환: queue.back()
5) 사이즈 반환: queue.size()
6) 비어있는지 확인: queue.empty()
1) 데이터 추가: stack.push(element)
2) 데이터 삭제: stack.pop()
3) 첫번째 데이터 반환: stack.top()
4) 사이즈 반환: queue.size()
5) 비어있는지 확인: queue.empty()