우선 범위지정 for 문은 이런걸 말한다.

1
2
3
4
5
6
int arr[] = {1,2,3,4,5};
 
for(int a : arr)
{
    cout << a << endl;
}
cs


c++ 11부터 추가되었고 배열이나 stl 의 요소들을 돌아볼때(?) 쓴다.

(참고로 동적할당된 배열은 끝을 알 수 없기 때문에 그냥 돌릴 수 없음)


https://msdn.microsoft.com/ko-kr/library/jj203382.aspx?f=255&MSPPError=-2147217396



내가 만든 클래스(혹은 구조체든 뭐든)이 범위기반 for문을 쓰려면 어떻게 해야할까?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Test
{
public:
    int arr[10];
...
}
 
 
void main()
{
    Test test;
    for(int a : test.arr)
    {
        cout << a << endl;
    }
}

cs


이런 식으로 쓰면 되겠지만


배열이름까지 쓰는게 번거롭다면?

만약 내가 만든 클래스안에 있는 배열이 private라면?


배열이 동적할당된 배열이라면

내가 만든 클래스안에 있는 배열의 목적은 처음부터 끝까지 도는게 아니라면?



 msdn은 답을 알고 있다.

범위 기반 for 에 대한 이러한 사실을 명심하십시오:

  • 배열을 자동으로 인식 합니다.

  • .begin() 및 .end() 을 가진 컨테이너를 인식하십시오.

  • 기타 항목을 위해 begin() 및 end() 인수 종속성 조회 사용하기.


예제가 안나와서 조금 헤매기는 했지만


간단히 예제를 만들어 보면


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Test
{
    int arr[10= { 1,2,3,4,5,6,7,8,9,0 };
    int min = 3;
    int max = 7;
public:
    int* begin() { return &arr[min]; }
    int* end() { return &arr[max]; }
};
 
void main()
{
    Test test;
    for (int a : test)
    {
        cout << a << endl;
    }
}
cs

이런식으로 처음과 끝 주소값을 반환하는 begin 과 end 함수를 만들어 주면 된다.


블로그 이미지

stuban

ㅇ.ㅇ

,
1
2



1
2
//배열을 리스트로
List<int> testList = testArr.ToList();
 
...
 
//리스트를 배열로
int[] testArray = testList.ToArr();
cs

역시 똑똑한 사람들이 만들어둔 물건에는 이런 간단하지만 직접만들라면 귀찮은 기능들이 기본으로 주어져서 참 좋은거 같다 !

블로그 이미지

stuban

ㅇ.ㅇ

,
1
2
3
4
5
6
7
8
List<Test> result = new List<Test>();
 
//합치기
result.AddRange(list1);
result.AddRange(list2);
 
//중복 제거
result = result.Distinct().ToList();
cs



블로그 이미지

stuban

ㅇ.ㅇ

,

http://blog.naver.com/PostView.nhn?blogId=dalsapcho&logNo=20144939371&parentCategoryNo=&categoryNo=29&viewDate=&isShowPopularPosts=false&from=postView


수학공부좀 더 할걸 그랬다.. 

그래도 인터넷의 힘은 데단헤 ㅎㅎ


밑은 위 공식을 코드로 바꾼거

1
2
result.x = ((Mathf.Cos(rad) * origin.x) - (Mathf.Sin(rad) * origin.y));
result.y = ((Mathf.Sin(rad) * origin.x) + (Mathf.Cos(rad) * origin.y));
cs


블로그 이미지

stuban

ㅇ.ㅇ

,


아폴로 계획이 1960년대에서 1970년초 까지니깐 베이직이나 코볼이 막 나온 시기였으나

역시 막나온 따끈따끈한 편한 언어보다는 가내수공업으로 코딩하는 갓갓 나사 형님들(거의 뜨개질 수준)


참고로 저거는 코어 메모리라고 하는건데 50년대 에 나온 겁나 오래된 저장장치임.


+코어 메모리에 대해 검색을 하다가 우리나라에 코어메모리를 구입한 사람의 글을 발견했음

http://blog.daum.net/isoh24/61

블로그 이미지

stuban

ㅇ.ㅇ

,
private AudioSource GetEmptySource()//비어있는 오디오 소스 반환
{
int lageindex = 0;
float lageProgress = 0;
for (int i = 0; i < SFXsource.Length; i++)
{
if (!SFXsource[i].isPlaying)
{
return SFXsource[i];
}

//만약 비어있는 오디오 소스를 못찿으면 가장 진행도가 높은 오디오 소스 반환

float progress = SFXsource[i].time / SFXsource[i].clip.length;
if(progress > lageProgress)
{
lageindex = i;
lageProgress = progress;
}
}
return SFXsource[lageindex];
}


복붙하면 배경이랑 글자색도 그대로 따라옴 

그래도 컬러스트립터가 더 좋은듯

블로그 이미지

stuban

ㅇ.ㅇ

,

출처&글 : http://blog.coderifleman.com/2016/12/30/bezier-curves/

 

1차 베지어 곡선

 

2차 베지어 곡선

 

3차 베지어 곡선

 

블로그 이미지

stuban

ㅇ.ㅇ

,

마인크래프트 비슷한 거를 만들고 싶어서 구글링하던 중 마인크래프트의 c0.30_01c 버전을 디 컴파일한 소스를 분석한 글을 발견했습니다.


영어가 안돼서 구글번역 돌려서 봤는데 번역기가 이상한 것인지 글쓴이가 이상한 것인지 아니면 내머리가 이상한지...

이해는 덜 돼도 꽤 재미있는 이야기가 많이 있더군요.



https://github.com/UnknownShadow200/ClassicalSharp/wiki/Minecraft-Classic-map-generation-algorithm






블로그 이미지

stuban

ㅇ.ㅇ

,