C++ tips
Categories: cpp-tips Cpp Programming
Tags: C++
๋ฐฐ์ด๊ฒ๋ค
2022 Aug 13
static ๋ณ์ ->๊ฐ์ฒด ๋ณ๋ก ํ ๋น๋์ง ์๊ณ ํด๋์ค์ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ๊ณต์ ํ๋ ๋งด๋ฒ๋ฅผ ์๋ฏธํจ
์ ์ ๋งด๋ฒ ํจ์ -> ํด๋น ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์๊ณ ๋, ํด๋์ค ์ด๋ฆ๋ง์ผ๋ก ํธ์ถํ ์ ์์
- \1. ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์๊ณ ํด๋์ค ์ด๋ฆ๋ง์ผ๋ก ํธ์ถํ ์ ์์ต๋๋ค
- ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์์ผ๋ฏ๋ก, this ํฌ์ธํฐ๋ฅผ ๊ฐ์ง์ง ์๋๋ค
- ํน์ ๊ฐ์ฒด์ ๊ฒฐํฉํ์ง ์์ผ๋ฏ๋ก, ์ ์ ๋งด๋ฒ ๋ณ์๋ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
2022 Aug 14
cpp unique function.
// C++ program to demonstrate the use of std::unique
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> v = { 1, 1, 3, 3, 3, 10, 1, 3, 3, 7, 7, 8 }, i;
vector<int>::iterator ip;
// Using std::unique
ip = std::unique(v.begin(), v.begin() + 12);
// Now v becomes {1 3 10 1 3 7 8 * * * * *}
// * means undefined
// Resizing the vector so as to remove the undefined terms
v.resize(std::distance(v.begin(), ip));
// Displaying the vector after applying std::unique
for (ip = v.begin(); ip != v.end(); ++ip) {
cout << *ip << " ";
}
return 0;//output: 1 3 10 1 3 7 8
}
Input ๋ฐ๋๋ฒ
input์ด โinput1 input2โํ์์ผ๋
for (const auto& s : report) {
stringstream in(s);
string a, b;
in >> a >> b;
v.push_back({ Conv[a], Conv[b] });
}
reverse_copy(filtered_string.begin(), filtered_string.end(), reversed_string.begin());
int isalnum(int c) -> Checks whether c is either a decimal digit or an uppercase or lowercase letter.
tolower ->change to lower case letter
->` is defined in terms of `.
That is, a->b
is equivalent to (*a).b
and so youโll obviously get the same results.
->
exists for convenience.
2022 Aug 15
void unsubscribe(Observer<T>& observer)
{
observers.erase(
remove(observers.begin(), observers.end(), observer),
observers.end()
);
}
2022 Aug 17
์ค๋งํธ ํฌ์ธํฐ
uniqueํฌ์ธํฐ๋ move๋ฉค๋ฒ ํจ์๋ฅผ ํตํด ์์ ๊ถ์ ์ด์ ํ ์ ์์ง๋ง ๋ณต์ฌ๋ ๋ถ๊ฐํ๋ค
์์ ๊ถ์ด ์ด์ ๋๋ฉด ์ด์ unique_ptr์ธ์คํด์ค๋ ๋๋ ํด๋น ๊ฐ์ฒด๋ฅผ ์์ ํ์ง ์๊ฒ ์ฌ์ค์ ๋๋ค
shared_ptr์ ํ๋์ ํน์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ์ค๋งํธ ํฌ์ธํฐ๊ฐ ์ด ๋ช ๊ฐ์ธ์ง๋ฅผ ์ฐธ์กฐํ๋ ์ค๋งํธ ํฌ์ธํฐ์ ๋๋ค.
์ด๋ ๊ฒ ์ฐธ์กฐํ๊ณ ์๋ ์ค๋งํธ ํฌ์ธํฐ์ ๊ฐ์๋ฅผ ์ฐธ์กฐ ํ์(reference count)๋ผ๊ณ ํฉ๋๋ค.
weak_ptr์ ํ๋ ์ด์์ shared_ptr ์ธ์คํด์ค๊ฐ ์์ ํ๋ ๊ฐ์ฒด์ ๋ํ ์ ๊ทผ์ ์ ๊ณตํ์ง๋ง, ์์ ์์ ์์๋ ํฌํจ๋์ง ์๋ ์ค๋งํธ ํฌ์ธํฐ์ ๋๋ค.
shared_ptr์ ์ฐธ์กฐ ํ์(reference count)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ ์ค๋งํธ ํฌ์ธํฐ์ ๋๋ค.
๋ง์ฝ ์๋ก๊ฐ ์๋๋ฐฉ์ ๊ฐ๋ฆฌํค๋ shared_ptr๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด, ์ฐธ์กฐ ํ์๋ ์ ๋ 0์ด ๋์ง ์์ผ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ๋ ์์ํ ํด์ ๋์ง ์์ต๋๋ค.
์ด๋ ๊ฒ ์๋ก๊ฐ ์๋๋ฐฉ์ ์ฐธ์กฐํ๊ณ ์๋ ์ํฉ์ ์ํ ์ฐธ์กฐ(circular reference)๋ผ๊ณ ํฉ๋๋ค.
weak_ptr์ ๋ฐ๋ก ์ด๋ฌํ shared_ptr ์ธ์คํด์ค ์ฌ์ด์ ์ํ ์ฐธ์กฐ๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด์ ์ฌ์ฉ๋ฉ๋๋ค.
2022 Aug 29
Helpful string functions: isalnum, tolower
2022 Oct 12
removing duplicates:
sort(v.begin(), v.end());
v.erase(std::unique(v.begin(),v.end()), v.end())
stack grows because of page fault exception.
2022 Oct 27
glad์ glfw๋ฅผ ๊ฐ์ด ์ฌ์ฉํ ๋ ์ฃผ์ํด์ผํ ๊ฒ๋ค
https://stackoverflow.com/questions/62756734/glad-causes-glfwswapbuffers-to-return-error-message
2022 Nov 7
c++ 11 ์ด์๋ฒ์ ์์ ์ฌ๋ฌ์ค์ ๊ฑธ์น ์คํธ๋ง์ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฝ์์ ์๋ค
std::string vertexShader =R"glsl(
#version 330 core
layout(location = 0) in vec4 position;
void main(){
gl_Position = position;
}
)glsl";
2022 Nov 9
cpp 20์์ vector slicing ํ๋๋ฒ
https://godbolt.org/z/qeaxvjdbj
2022 Nov 27
clion ์์์ relative path๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ Edit Configuration
์ ๋ค์ด๊ฐ์ working directory
๋ฅผ ์ง์ ํด ์ค์ผํ๋ค.
2023 Feb 02
When do we use no except: https://stackoverflow.com/questions/10787766/when-should-i-really-use-noexcept
Leave a comment