C++: 두 판 사이의 차이
조무위키
(C++ 문서로 넘겨주기) |
imported>왕킹 잔글 (러스트 페이지로 연결되도록 Rust->러스트(프로그래밍 언어)로 수정) |
||
1번째 줄: | 1번째 줄: | ||
# | {{공대생}} | ||
{{빠름}} | |||
[[C언어]]의 확장팩...이였던 시절도 있었으나 지금은 C언어와는 완전히 다른 언어라고 봐도 좋을정도로 바뀌었다. | |||
초급 수준의 문법은 C언어에서 쓰던거 C++에서 그대로 굴러도 상관없으나 그 이상으로 넘어가면 C++ 전용 문법을 굴리는게 편하다. | |||
[[.Net 프레임워크]]전용버전으로 C++/CLI라는 게 있다. | |||
이건 CRL에서 동작하기 때문에 [[가비지 컬렉터]]가 작동한다. | |||
마소가 객체지향 절차지향 양다리 걸치는 새끼를 만들어 놓았다. | |||
구동프로그램은 비주얼스튜디오나 DEV_C++가 편하다. | |||
==c와의 차이점== | |||
c랑 c++이 헷갈린 중생들을 위한 특징을 정리하자 | |||
===class 지원=== | |||
c++에서는 | |||
<source lang="cpp"> | |||
class Abc { | |||
int a, b, c; | |||
void k() { a = b+c; } | |||
}; | |||
Abc abc[1000]; | |||
for (int i = 0; i < 1000; i++) abc[i].k(); | |||
</source> | |||
이렇게 쓸수 있는걸 c에서는 | |||
<source lang="cpp"> | |||
void k(int &a, int b, int c) { a = b + c; } | |||
int a[1000], b[1000], c[1000]; | |||
for (int i = 0; i < 1000; i++) k(a, b, c); | |||
</source> | |||
이렇게 써야 한다 좆같다 | |||
<source lang="cpp"> | |||
typedef struct Abc | |||
{ | |||
int a, b, c; | |||
}Abc; | |||
void k(Abc* abc) { abc->a = abc->b + abc->c; } | |||
Abc abc[1000]; | |||
for (int i = 0; i < 1000; i++) k(&abc[i]); | |||
</source> | |||
이렇게 할수있어 병신아 | |||
===operator overloading 지원=== | |||
c++에서는 | |||
<source lang="cpp"> | |||
class Abc { | |||
int a,b,c; | |||
Abc& operator+(Abc& m) { a+=m.a; b+=m.b; c+=m.c; return *this; } | |||
}; | |||
Abc a, b, c; | |||
c = a + b; | |||
</source> | |||
이렇게 쓸수 있는걸 c에서는 | |||
<source lang="cpp"> | |||
int a1, b1, c1; | |||
int a2, b2, c2; | |||
int a3, b3, c3; | |||
a3 = a1 + a2; | |||
b3 = b1 + b2; | |||
c3 = c1 + c2; | |||
</source> | |||
이렇게 써야 한다 좆같다 | |||
===template 지원=== | |||
쉽게 말해서 이게 지원 안되면 stl 라이브러리를 죄다 쓸 수 없다 | |||
또 뭐있냐? 아 몰랑 니가 직접 찾아봐 | |||
===한줄요약=== | |||
C언어 + [[DLC]] 확장판 | |||
==특징== | |||
{{어려운 게임 }} | |||
프로그래밍 업계에 자주 쓰이는 언어들 중에서 가장 난이도가 높다. | |||
비교적 로우레벨 언어다보니 최적화가 잘 된다. 게임 개발, 애플리케이션 개발에 많이 쓰인다. | |||
라이브러리 의존성이 개좆같다. 파이썬은 pip Rust는 cargo 심지어 vim도 Vundle랍시고 패키지관리자가 있는데 c++는 그런거 없고 매번 직접 다 컴파일해야한다. 리눅스쯤 되면 apt에서 dev붙은 라이브러리로 어떻게 제공해주긴 하지만 ... | |||
ㄴ 윈도라고 꼭 컴파일할필요는 없고 "라이브러리명 windows binary" 이런식으로 검색해보면 MinGW든 MSVC든 누가 컴파일해놓은게 있으니 그거 가져다쓰면 편함 고마워요! | |||
이런 좆같은 라이브러리 의존성을 해소하고 독립적인 관리자를 제공할뿐만아니라 기존의 좆같은 c++의 문법구조대신 scheme기반의 문법구조를 쓰는 [[러스트(프로그래밍 언어)]]쓰자 쓰는 사람도 아직 몇 없어서 있어보인다 | |||
ㄴRust 빠르냐? | |||
ㄴ 부실하지만 빠르다 | |||
==점유율== | |||
[[Python]], [[C#]]처럼 C++보다 더 쉬운 언어들이 널리 쓰이기 시작하면서 | |||
해마다 점유율이 떨어져 가고있다. 그래도 여전히 자주 쓰이는 언어 3위이다. | |||
참고로 2016년 1월 현재 점유율 1위는 [[Java]], 2위는 [[C언어]]이다. | |||
<br>ㄴ시발 자바배울걸 그랬나;; | |||
ㄴ 2019년 10월 기준 4위다. 파이썬이 3위로 올라감 | |||
==Hello, world 출력== | |||
새로운 언어를 배울 때 가장 기초적인 문법을 제대로 배웠는지 이해하는 차원에서 한번씩 짜보는 프로그램이다. 이 글을 읽는 너도 한번 이 코드를 짜고 이해해 보자. | |||
<source lang="cpp"> | |||
/* | |||
* 8탭좀 쓰지 마라 십새기야 | |||
*/ | |||
#include <algorithm> | |||
#include <iostream> | |||
#include <vector> | |||
#include <string> | |||
int main() | |||
{ | |||
char pieces[16] = {'H', 'e', 'l', 'o', ',', ' ', 'W', 'r', 'd', '!'}; | |||
std::vector<bool> bits; | |||
std::string hello_world = "0000000100100010001101000101011000110111001010001001"; | |||
std::for_each(hello_world.begin(), hello_world.end(), | |||
[&bits](char& c) { | |||
bits.push_back(bool(c - '0')); | |||
}); | |||
for(unsigned i = 0; i < bits.size() / 4; ++i) | |||
{ | |||
auto semi_byte = bits[i * 4 + 3] + bits[i * 4 + 2] * 2 + bits[i * 4 + 1] * 4 + bits[i * 4] * 8; | |||
std::cout << pieces[semi_byte]; | |||
} | |||
return 0; | |||
} | |||
//ㄴ 저게 어떻게 기초적인 문법이냐 | |||
//ㄴ 허세쩜; | |||
//ㄴ 문법 나치 같은 새퀴 조까치 자네 | |||
//ㄴ 이해해보자는 거잖아 세상에 어떤 개줫지체장애인새끼가 저따구로 코드를 짜겠냐 | |||
//ㄴ 어떻게 하면 이따구로 짤 생각을 했을까 | |||
//ㄴ병신새끼 메모리를 그렇게 버리고 싶나? | |||
</source> | |||
=== 그냥 간단하게 짜자 === | |||
누가 저따위로 메모리를 낭비함 | |||
<source lang="cpp"> | |||
#include <iostream> | |||
using namespace std; | |||
int main(void) | |||
{ | |||
cout << "Hello World!" << endl; | |||
} | |||
</source> | |||
=== 더 간단하게 === | |||
iostream 개쓰레기 | |||
cin/cout으로 입출력하면 속도 걸레짝된다. 0ms 띄울 수 있는 문제를 4ms 띄우고, 원래 맞출 수 있는 문제를 시간초과로 둔갑시킬 수 있는 쓰레기 코드. | |||
먼소리야;; std::ios_base::sync_with_stdio(false) 를 main 함수 안에다 집어 넣으면 printf, scanf랑 거의 비슷하거나 오히려 더 빨라진다. | |||
어짜피 그정도 속도차이는 알고리즘 풀이 사이트를 제외하고는 신경쓸 필요 없다. 그러니까 그냥 iostream 써라 정말 좋다 | |||
ㄴ ㅋㅋ 살다살다 iostream 을 병신이라고 욕하는새끼를 다봣노, 그냥 기계어로 코딩해라 십새야 0101111010010101001 존나느린 C++ 왜쓰노 백준에서나 쓰지마셈 | |||
<source lang="cpp"> | |||
#include <cstdio> | |||
int main() | |||
{ | |||
std::printf("Hello World!\n"); //혹은 std::puts("Hello World!"); 라 해도 되고, 줄 아래로 더 쓸거 아니면 \n 안붙여도 됨. | |||
return 0; | |||
} | |||
</source> | |||
== 이새끼를 궁극적으로 쓰는 이유 == | |||
개인적인 이유지만 큐나 리스트만들기 존나 귀찮을때 STL 에서 꺼내다 쓰면 존나 편하다 하앜 과제할때 개꿀따리 | |||
[[분류:프로그래밍 언어]] |
2022년 1월 20일 (목) 03:15 기준 최신판
주의. 이 문서는 공머생들이 좋아하는 주제 혹은 공머생 그 자체에 대해 다룹니다. 본 문서가 다루는 내용에 지나치게 탐닉할 경우 필연적으로 여성들과 멀어지게 됩니다. 이는 조무위키가 책임지지 않습니다. |
즤! 이 문싀 댓은 좐 빫닏! 넘 빬 울 뉀 뵞 않싇! 넴! 겏라!~~ |
C언어의 확장팩...이였던 시절도 있었으나 지금은 C언어와는 완전히 다른 언어라고 봐도 좋을정도로 바뀌었다.
초급 수준의 문법은 C언어에서 쓰던거 C++에서 그대로 굴러도 상관없으나 그 이상으로 넘어가면 C++ 전용 문법을 굴리는게 편하다.
.Net 프레임워크전용버전으로 C++/CLI라는 게 있다. 이건 CRL에서 동작하기 때문에 가비지 컬렉터가 작동한다.
마소가 객체지향 절차지향 양다리 걸치는 새끼를 만들어 놓았다.
구동프로그램은 비주얼스튜디오나 DEV_C++가 편하다.
c와의 차이점[편집]
c랑 c++이 헷갈린 중생들을 위한 특징을 정리하자
class 지원[편집]
c++에서는
<source lang="cpp"> class Abc { int a, b, c; void k() { a = b+c; } }; Abc abc[1000]; for (int i = 0; i < 1000; i++) abc[i].k(); </source>
이렇게 쓸수 있는걸 c에서는
<source lang="cpp"> void k(int &a, int b, int c) { a = b + c; } int a[1000], b[1000], c[1000]; for (int i = 0; i < 1000; i++) k(a, b, c); </source>
이렇게 써야 한다 좆같다
<source lang="cpp"> typedef struct Abc { int a, b, c; }Abc; void k(Abc* abc) { abc->a = abc->b + abc->c; } Abc abc[1000]; for (int i = 0; i < 1000; i++) k(&abc[i]); </source>
이렇게 할수있어 병신아
operator overloading 지원[편집]
c++에서는
<source lang="cpp"> class Abc { int a,b,c; Abc& operator+(Abc& m) { a+=m.a; b+=m.b; c+=m.c; return *this; } }; Abc a, b, c; c = a + b; </source>
이렇게 쓸수 있는걸 c에서는
<source lang="cpp"> int a1, b1, c1; int a2, b2, c2; int a3, b3, c3; a3 = a1 + a2; b3 = b1 + b2; c3 = c1 + c2; </source>
이렇게 써야 한다 좆같다
template 지원[편집]
쉽게 말해서 이게 지원 안되면 stl 라이브러리를 죄다 쓸 수 없다
또 뭐있냐? 아 몰랑 니가 직접 찾아봐
한줄요약[편집]
C언어 + DLC 확장판
특징[편집]
계속하면 정신이 나가 샷건을 칠 수 있으니 하기 전에 다량의 항암제를 준비하거나 전문가와 상의를 권고합니다. 하지만 이미 늦었군요, YOU DIED |
프로그래밍 업계에 자주 쓰이는 언어들 중에서 가장 난이도가 높다.
비교적 로우레벨 언어다보니 최적화가 잘 된다. 게임 개발, 애플리케이션 개발에 많이 쓰인다.
라이브러리 의존성이 개좆같다. 파이썬은 pip Rust는 cargo 심지어 vim도 Vundle랍시고 패키지관리자가 있는데 c++는 그런거 없고 매번 직접 다 컴파일해야한다. 리눅스쯤 되면 apt에서 dev붙은 라이브러리로 어떻게 제공해주긴 하지만 ...
ㄴ 윈도라고 꼭 컴파일할필요는 없고 "라이브러리명 windows binary" 이런식으로 검색해보면 MinGW든 MSVC든 누가 컴파일해놓은게 있으니 그거 가져다쓰면 편함 고마워요!
이런 좆같은 라이브러리 의존성을 해소하고 독립적인 관리자를 제공할뿐만아니라 기존의 좆같은 c++의 문법구조대신 scheme기반의 문법구조를 쓰는 러스트(프로그래밍 언어)쓰자 쓰는 사람도 아직 몇 없어서 있어보인다
ㄴRust 빠르냐? ㄴ 부실하지만 빠르다
점유율[편집]
Python, C#처럼 C++보다 더 쉬운 언어들이 널리 쓰이기 시작하면서
해마다 점유율이 떨어져 가고있다. 그래도 여전히 자주 쓰이는 언어 3위이다.
참고로 2016년 1월 현재 점유율 1위는 Java, 2위는 C언어이다.
ㄴ시발 자바배울걸 그랬나;;
ㄴ 2019년 10월 기준 4위다. 파이썬이 3위로 올라감
Hello, world 출력[편집]
새로운 언어를 배울 때 가장 기초적인 문법을 제대로 배웠는지 이해하는 차원에서 한번씩 짜보는 프로그램이다. 이 글을 읽는 너도 한번 이 코드를 짜고 이해해 보자.
<source lang="cpp"> /*
* 8탭좀 쓰지 마라 십새기야 */
- include <algorithm>
- include <iostream>
- include <vector>
- include <string>
int main() {
char pieces[16] = {'H', 'e', 'l', 'o', ',', ' ', 'W', 'r', 'd', '!'}; std::vector<bool> bits; std::string hello_world = "0000000100100010001101000101011000110111001010001001";
std::for_each(hello_world.begin(), hello_world.end(), [&bits](char& c) { bits.push_back(bool(c - '0')); });
for(unsigned i = 0; i < bits.size() / 4; ++i) { auto semi_byte = bits[i * 4 + 3] + bits[i * 4 + 2] * 2 + bits[i * 4 + 1] * 4 + bits[i * 4] * 8; std::cout << pieces[semi_byte]; }
return 0;
}
//ㄴ 저게 어떻게 기초적인 문법이냐 //ㄴ 허세쩜; //ㄴ 문법 나치 같은 새퀴 조까치 자네 //ㄴ 이해해보자는 거잖아 세상에 어떤 개줫지체장애인새끼가 저따구로 코드를 짜겠냐 //ㄴ 어떻게 하면 이따구로 짤 생각을 했을까 //ㄴ병신새끼 메모리를 그렇게 버리고 싶나? </source>
그냥 간단하게 짜자[편집]
누가 저따위로 메모리를 낭비함
<source lang="cpp">
- include <iostream>
using namespace std;
int main(void) {
cout << "Hello World!" << endl;
} </source>
더 간단하게[편집]
iostream 개쓰레기
cin/cout으로 입출력하면 속도 걸레짝된다. 0ms 띄울 수 있는 문제를 4ms 띄우고, 원래 맞출 수 있는 문제를 시간초과로 둔갑시킬 수 있는 쓰레기 코드.
먼소리야;; std::ios_base::sync_with_stdio(false) 를 main 함수 안에다 집어 넣으면 printf, scanf랑 거의 비슷하거나 오히려 더 빨라진다.
어짜피 그정도 속도차이는 알고리즘 풀이 사이트를 제외하고는 신경쓸 필요 없다. 그러니까 그냥 iostream 써라 정말 좋다
ㄴ ㅋㅋ 살다살다 iostream 을 병신이라고 욕하는새끼를 다봣노, 그냥 기계어로 코딩해라 십새야 0101111010010101001 존나느린 C++ 왜쓰노 백준에서나 쓰지마셈
<source lang="cpp">
- include <cstdio>
int main() {
std::printf("Hello World!\n"); //혹은 std::puts("Hello World!"); 라 해도 되고, 줄 아래로 더 쓸거 아니면 \n 안붙여도 됨. return 0;
} </source>
이새끼를 궁극적으로 쓰는 이유[편집]
개인적인 이유지만 큐나 리스트만들기 존나 귀찮을때 STL 에서 꺼내다 쓰면 존나 편하다 하앜 과제할때 개꿀따리