#include <iostream>
int main() {
}
- #: 컴파일 시작 전 미리 처리하기 위한 전처리기
- #include: 외부에 선언된 함수, 상수 등을 사용하기 위해 선언
- <iostream>: 스트림을 이용한 입출력을 제공하는 객체 지향 라이브러리
- int main(): 프로그램이 시작될 때 가장 먼저 호출되는 함수
문자열을 이용할때는 std::string 타입을 이용해야 한다.
if (조건1) {
실행코드1
} else if (조건2) {
실행코드2
} else {
실행코드3
}
switch(변수) {
case 값1:
실행코드1;
break;
case 값2:
실행코드2;
break;
default:
기본실행코드;
}
조건 ? 조건이 참일 때 실행할 코드 : 조건이 거짓일 때 실행할 코드;
for(초기값; 조건문; 증감문){
실행코드
}
for (자료형 변수이름 : 배열) {}
while (조건문) {}
do {} while(조건문);
리턴타입 함수이름(인수목록) {}
- 리턴타입 : 이 함수가 결과로 어떤 유형의 값을 반환할지 선언
- 함수이름 : 함수의 이름을 결정, 추후 호출 할때 사용
- 매개변수 : 함수 외부의 값을 내부에서 사용할 수 있게 해주는 변수
- 선언과 초기화 분리
string fruit[3];
fruit[0] = "apple";
fruit[1] = "banana";
fruit[2] = "orange";
- 선언과 초기화를 동시에
string fruit[] = {"apple", "banana", "orange"};
std::string fruit[2][2] = {
{ "apple", "banana" },
{ "orange", "strawberry" }
};
for(int i=0; i< sizeof(fruit)/sizeof(fruit[0]); i++)
{
cout << fruit[i] << endl;
}
for (string fr : fruit)
{
cout << fr << endl;
}
int* p; // 포인터변수
int n = 10;
p = &n; // p에 n의 메모리 주소를 저장함
메모리 영역
- 힙 영역 : 동적 메모리 저장, 할당과 해제를 직접 관리해줘야함
- 스택 영역 : 정적 메모리 저장, 빌드할 때 크기가 지정되어 있어야 함
포인터를 이용하면 동적 메모리를 생성할 수 있다. 하지만 포인터를 이용한 모든 변수가 동적 메모리는 아니다.
int* arr = new int[n];
delete[] arr;
int** arr = new int* [n];
for (int i=0; i<n; i++)
{
arr[i] = new int[n];
}
for (int i=0; i<n; i++)
{
delete[] arr[i];
}
delete[] arr;
#include <vector>
vector<int> v = { 1,2,3,4,5 };
vector<int>v(4); //int형 백터 크기를 4로 할당하고 모든 백터요소 0으로 초기화
vector<int> v(5, 1); //int형 백터 크기를 5로 할당하고 모든 백터요소 1로 초기화
v.assign(5, 1); //벡터 크기 5, 모든 요소 1로 초기화
영어로 된 문자열 모두 소문자로 입력 받아서 문자열에 사용된 문자의 개수를 구하시오
ex)
입력예시 : apple
출력예시 : 4 개 ( a, p, l, e )
입력예시 : bacon
출력예시 : 5 개 ( b, a, c, o, n )
입력예시 : i have a pen
출력예시 : 7 개 ( i, h, a, v, e, p, n )
#include <iostream>
#include <vector>
using namespace std;
int main()
{
string str;
cout << "입력예시 : ";
getline(cin, str); <!-- 공백 포함 입력받기 --!>
<!-- str.erase(remove(str.begin(), str.end(), ' '), str.end()); 문자열 공백 제거 --!>
vector<char> v;
int i;
for (char s : str)
{
if (s != ' ')
{
for (i=0; i<v.size();i++)
{
if (v.at(i)==str[j]) break;
}
if(i==v.size())
{
v.push_back(str[j]);
}
}
}
cout << "출력예시 : "<< v.size() << " 개(";
for (i=0; i<v.size(); i++)
{
cout << v.at(i);
if (i != v.size()-1)
cout << ",";
}
cout << ")";
}
std::string test = "포스코";
test = "코딩온";
(double)a/b
int num[3] = {1, 2, 3};
for (auto n : num) { // int n이 아닌 auto도 가능하다.
cout << n << " ";
}
//값을 변경시키기 위해서는 &를 붙여주어야 한다.
for (auto &n : num) {
cin >> n;
}
for (auto &n : num){
n += 1;
}
//2차원 배열에서는 값을 읽어오기 위해서도 &를 붙여주어야 한다.(그냥 헷갈리면 다 붙이자)
char alpha[2][4] = {{'a','b','c','d'}, {'e','f','g','h'}};
for (auto &arr : alpha) {
for (auto a : arr) {
cout << a << " ";
}
cout << endl;
}