일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- LLM
- LG Aimers 4th
- LG
- OpenAI
- ChatGPT
- 해커톤
- LG Aimers
- PCA
- Classification
- AI
- gpt
- 티스토리챌린지
- 딥러닝
- 머신러닝
- GPT-4
- 오블완
- supervised learning
- 회귀
- regression
- Machine Learning
- 지도학습
- 분류
- deep learning
Archives
- Today
- Total
SYDev
[객체지향프로그래밍] 9주차 정리 본문
경희대학교 이대호 교수님의 수업 자료를 바탕으로 작성한 글입니다.
File Streams
#include <iostream>
#include <fstream>
void save_vector (const std::string& filename, const std::vector<int>& vec) {
std::ofstream out(filename);
if(out.good()) {
int n = vec.size();
for(int i = 0; i < n; i++) {
out << vec[i] << " ";
}
out << '\n';
out.close();
}
else {
std::cout << "Unable to save the file\n";
}
}
void load_vector(const std::string& filename, std::vector<int>& vec) {
std::ifstream in(filename);
if(in.good()) {
vec.clear();
int value;
while(in >> value) vec.push_back(value);
in.close();
}
else {
std::cout << "Unable to load in the file\n";
}
}
void print_vector(const std::vector<int>& vec) {
std::cout << "{";
int len = vec.size();
if(len > 0) {
for(int i = 0; i < len - 1; i++) {
std::cout << vec[i] << ", ";
}
std::cout << vec[len - 1];
}
std::cout << "}\n";
}
int main() {
std::vector<int> list;
bool done = false;
char command;
while(!done) {
std::cout << "I)nsert <item> P)rint "
<< "S)ave <filename> L)oad <filename> "
<< "E)rase Q)uit: ";
std::cin >> command;
int value;
std::string filename;
switch (command) {
case 'I':
case 'i':
std::cin >> value;
list.push_back(value);
break;
case 'P':
case 'p':
print_vector(list);
break;
case 'S':
case 's':
std::cin >> filename;
save_vector(filename, list);
break;
case 'L':
case 'l':
std::cin >> filename;
load_vector(filename, list);
break;
case 'E':
case 'e':
list.clear();
break;
case 'Q':
case 'q':
done = true;
break;
}
}
return 0;
}
-> ofstream type + <<으로 파일에 입력
-> ifstream type + >>으로 파일 불러오기
Endl vs. \n
endl → buffer를 비우고 출력
\n → buffer를 비우지 않고 바로 출력
→ 그렇기 때문에 \n이 더 빠르다.
Binary format
#include <iostream>
#include <fstream>
int main(void) {
std::ofstream ofs;
ofs.open("123.bin", std::ios::binary); //binary format으로 파일에 저장
if(ofs.good()) {
int x = 65;
ofs.write((const char*)&x, sizeof(int));
ofs.close();
}
std::ifstream ifs;
ifs.open("123.bin", std::ios::binary);
if(ifs.good()) {
int x;
ifs.read((char *)&x, sizeof(int));
std::cout << x << std::endl;
ifs.close();
}
return 0;
}
-> 기존 txt format에서는 123을 1, 2, 3 각각 char 형태로 바꿔서 저장
-> binary format은 int type은 그대로 int type의 size(4 byte)대로 저장!
Complex
- complex<실수부, 허수부 data type(double, int, float, ..)> 형태로 선언 -> complex<double> c1( 4.0, 3.0 )
- .imag(), .real()로 허수부, 실수부 추출
- 비멤버 함수 abs, norm -> std::norm(z), std::abs(z)
sstream
#include <iostream>
#include <sstream>
int main(void) {
std::stringstream ss;
for(int i = 0; i < 10; i++) {
ss << i << ", ";
}
std::cout << ss.str() << std::endl;
return 0;
}
-> 다른 type의 입력을 string 하나로 묶을 때
-> string에서 문자, 정수 등의 형태를 추출하고 싶을 때 사용
PseudoRandomNumber
-> %10000으로 rand()를 이용했을 때, 공평하지 않은 확률로 결과값이 도출됨
#include <iostream>
#include <iomanip>
#include <random>
int main(void) {
std::random_device rdev;
std::mt19937 mt(rdev()); //random number를 정하는 알고리즘 설정
std::uniform_int_distribution<int> dist(0, 99); //분포형태 결정
// std::normal_distribution<double> dist(50., 10.);
int histogram[100] = { 0 };
for(int i = 0; i < 1000000; i++) {
int r = dist(mt);
// if(r >= 0 && r <= 99)
histogram[r]++;
}
for(int i = 0; i < 100; i++) {
std::cout << i << ": " << histogram[i] << std::endl;
}
return 0;
}
'3학년 1학기 전공 > 객체지향 프로그래밍' 카테고리의 다른 글
[객체지향프로그래밍] 8주차 정리 (0) | 2024.04.30 |
---|---|
[객체지향프로그래밍] 5주차 정리 (0) | 2024.04.01 |
[객체지향프로그래밍] 4주차 정리 (0) | 2024.03.27 |
[객체지향프로그래밍] 3주차 정리 (0) | 2024.03.19 |
[객체지향프로그래밍] 2주차 정리 (1) | 2024.03.12 |