본문으로 이동

C++: 두 판 사이의 차이

K-위키
편집 요약 없음
러스트 페이지로 연결되도록 Rust->러스트(프로그래밍 언어)로 수정
 
(사용자 3명의 중간 판 5개는 보이지 않습니다)
9번째 줄: 9번째 줄:
이건 CRL에서 동작하기 때문에 [[가비지 컬렉터]]가 작동한다.
이건 CRL에서 동작하기 때문에 [[가비지 컬렉터]]가 작동한다.


구동프로그램은 DEV_C++가 편하다.
마소가 객체지향 절차지향 양다리 걸치는 새끼를 만들어 놓았다.
 
구동프로그램은 비주얼스튜디오나 DEV_C++가 편하다.


==c와의 차이점==
==c와의 차이점==
99번째 줄: 101번째 줄:
ㄴ 윈도라고 꼭 컴파일할필요는 없고 "라이브러리명 windows binary" 이런식으로 검색해보면 MinGW든 MSVC든 누가 컴파일해놓은게 있으니 그거 가져다쓰면 편함 고마워요!
ㄴ 윈도라고 꼭 컴파일할필요는 없고 "라이브러리명 windows binary" 이런식으로 검색해보면 MinGW든 MSVC든 누가 컴파일해놓은게 있으니 그거 가져다쓰면 편함 고마워요!


이런 좆같은 라이브러리 의존성을 해소하고 독립적인 관리자를 제공할뿐만아니라 기존의 좆같은 c++의 문법구조대신 scheme기반의 문법구조를 쓰는 [[Rust]]쓰자 쓰는 사람도 아직 몇 없어서 있어보인다
이런 좆같은 라이브러리 의존성을 해소하고 독립적인 관리자를 제공할뿐만아니라 기존의 좆같은 c++의 문법구조대신 scheme기반의 문법구조를 쓰는 [[러스트(프로그래밍 언어)]]쓰자 쓰는 사람도 아직 몇 없어서 있어보인다


ㄴRust 빠르냐?
ㄴRust 빠르냐?
178번째 줄: 180번째 줄:
먼소리야;; std::ios_base::sync_with_stdio(false) 를 main 함수 안에다 집어 넣으면 printf, scanf랑 거의 비슷하거나 오히려 더 빨라진다.
먼소리야;; std::ios_base::sync_with_stdio(false) 를 main 함수 안에다 집어 넣으면 printf, scanf랑 거의 비슷하거나 오히려 더 빨라진다.


어짜피 그정도 속도차이는 알고리즘 풀이 사이트를 제외하고는 신경쓸 필요 없다. 그러니까 그냥 iostream 써라 정말 좋다.
어짜피 그정도 속도차이는 알고리즘 풀이 사이트를 제외하고는 신경쓸 필요 없다. 그러니까 그냥 iostream 써라 정말 좋다
 
ㄴ ㅋㅋ 살다살다 iostream 을 병신이라고 욕하는새끼를 다봣노, 그냥 기계어로 코딩해라 십새야 0101111010010101001 존나느린 C++ 왜쓰노 백준에서나 쓰지마셈
 
<source lang="cpp">
<source lang="cpp">
#include <cstdio>  
#include <cstdio>  

2022년 1월 20일 (목) 03:15 기준 최신판

주의. 이 문서는 공머생들이 좋아하는 주제 혹은 공머생 그 자체에 대해 다룹니다.
본 문서가 다루는 내용에 지나치게 탐닉할 경우 필연적으로 여성들과 멀어지게 됩니다.
이는 디시위키가 책임지지 않습니다.
즤! 이 문싀 댓은 좐 빫닏!
넘 빬 울 뉀 뵞 않싇! 넴! 겏라!~~

C언어의 확장팩...이였던 시절도 있었으나 지금은 C언어와는 완전히 다른 언어라고 봐도 좋을정도로 바뀌었다.

초급 수준의 문법은 C언어에서 쓰던거 C++에서 그대로 굴러도 상관없으나 그 이상으로 넘어가면 C++ 전용 문법을 굴리는게 편하다.

.Net 프레임워크전용버전으로 C++/CLI라는 게 있다. 이건 CRL에서 동작하기 때문에 가비지 컬렉터가 작동한다.

마소가 객체지향 절차지향 양다리 걸치는 새끼를 만들어 놓았다.

구동프로그램은 비주얼스튜디오나 DEV_C++가 편하다.

c와의 차이점

[편집 | 원본 편집]

c랑 c++이 헷갈린 중생들을 위한 특징을 정리하자

class 지원

[편집 | 원본 편집]

c++에서는

class Abc {
int a, b, c;
void k() { a = b+c; }
};
Abc abc[1000];
for (int i = 0; i < 1000; i++) abc[i].k();

이렇게 쓸수 있는걸 c에서는

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);

이렇게 써야 한다 좆같다

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]);

이렇게 할수있어 병신아

operator overloading 지원

[편집 | 원본 편집]

c++에서는

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;

이렇게 쓸수 있는걸 c에서는

int a1, b1, c1;
int a2, b2, c2;
int a3, b3, c3;
a3 = a1 + a2;
b3 = b1 + b2;
c3 = c1 + c2;

이렇게 써야 한다 좆같다

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 출력

[편집 | 원본 편집]

새로운 언어를 배울 때 가장 기초적인 문법을 제대로 배웠는지 이해하는 차원에서 한번씩 짜보는 프로그램이다. 이 글을 읽는 너도 한번 이 코드를 짜고 이해해 보자.

/*
 * 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;
}

//ㄴ 저게 어떻게 기초적인 문법이냐
//ㄴ 허세쩜;
//ㄴ 문법 나치 같은 새퀴 조까치 자네
//ㄴ 이해해보자는 거잖아 세상에 어떤 개줫지체장애인새끼가 저따구로 코드를 짜겠냐
//ㄴ 어떻게 하면 이따구로 짤 생각을 했을까
//ㄴ병신새끼 메모리를 그렇게 버리고 싶나?

그냥 간단하게 짜자

[편집 | 원본 편집]

누가 저따위로 메모리를 낭비함

#include <iostream>
using namespace std;

int main(void)
{
    cout << "Hello World!" << endl;
}

더 간단하게

[편집 | 원본 편집]

iostream 개쓰레기

cin/cout으로 입출력하면 속도 걸레짝된다. 0ms 띄울 수 있는 문제를 4ms 띄우고, 원래 맞출 수 있는 문제를 시간초과로 둔갑시킬 수 있는 쓰레기 코드.

먼소리야;; std::ios_base::sync_with_stdio(false) 를 main 함수 안에다 집어 넣으면 printf, scanf랑 거의 비슷하거나 오히려 더 빨라진다.

어짜피 그정도 속도차이는 알고리즘 풀이 사이트를 제외하고는 신경쓸 필요 없다. 그러니까 그냥 iostream 써라 정말 좋다

ㄴ ㅋㅋ 살다살다 iostream 을 병신이라고 욕하는새끼를 다봣노, 그냥 기계어로 코딩해라 십새야 0101111010010101001 존나느린 C++ 왜쓰노 백준에서나 쓰지마셈

#include <cstdio> 

int main()
{
    std::printf("Hello World!\n"); //혹은 std::puts("Hello World!"); 라 해도 되고, 줄 아래로 더 쓸거 아니면 \n 안붙여도 됨.
    return 0;
}

이새끼를 궁극적으로 쓰는 이유

[편집 | 원본 편집]

개인적인 이유지만 큐나 리스트만들기 존나 귀찮을때 STL 에서 꺼내다 쓰면 존나 편하다 하앜 과제할때 개꿀따리