반응형

참조 : 바로가기 


List에서는 프레임워크에 내장된 특별한 인터페이스를 통해 리스트에서 멤버를 정렬할   있는 별도의 클래스를 만들  있다.

 

IComparer인터페이스를 구현해 List 객체를 정렬하는 방법을 알려줄  있다.

이는 IComparer인터페이스에 있는 Compare()메소드를 구현하면 된다 메소드에서는  객체를 매개변수로 받고, int 반환한다.


IComparer 정렬할 때는  인터페이스를 구현하는 클래스의 인스턴스를 새로 만들어야 한다.

 객체는 List.Sort()에서 객체들을 정렬하는  도움을 주기 위한 용도로만 사용된다.

 

 

1
2
3
4
5
6
7
8
9
using System;
 
namespace Sort
{
    class Test
    {
        public int Size;
     }   
}

Test 클래스

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
 
namespace Sort
{
    class ComparerBySize : IComparer<Test> // Test객체를 정렬할 때 쓰는 클래스는 걸 알려준다
    {
        public int Compare(Test x, Test y)        //같은 유형끼리만 비교할 수 있다
        {
            if(x.Size < y.Size)
               return -1;       // -1을 반환한다는 것은 x객체가 y객체보다 앞으로 가야한다는 것을 뜻한다
                                   // 이는 x가 y보다 작다는 뜻이다
            if(x.Size > y.Size)
               return 1;        // 1을 반환한다는 것은 x객체가 y객체보다 뒤로 가야한다는 것을 뜻한다
                                   // 이는 x가 y보다 크다는 뜻이다
            else 
               return 0;
         }
     }
}

ComparerBySize 클래스

 

 

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
using System;
using Syste.Collection.Generic;
 
namespace Sort
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Test> test = new List<Test>()
            {
                new Test(){ Size=17},
                new Test(){ Size=18},
                new Test(){ Size=14},
                new Test(){ Size=11},
                new Test(){ Size=15},
                new Test(){ Size=13}
             };
            
            ComparerBySize comparerSize = new ComparerBySize();
            
            test.Sort(comparerSize);
            
            foreach(Test t in test)
             Console.WriteLine(t.Size); // 11 13 14 15 17 18 출력
         }
     }
}

Main 

 


 


반응형

'OtherLanguage > C' 카테고리의 다른 글

20100609 c언어 정리  (0) 2010.06.09
구조체와 typedef 자료형 선언  (0) 2010.06.04
c언어 필기노트  (0) 2010.06.01
반응형

[[ c언어 ]]

프로젝트 생성

파일-> new ->project-> win32consolap-> empty

파일 -> new ->file -> c++ -> 파일.c 저장

 

컴파일 => 컴파일한다

빌드 => 디버깅을 쉽게 할수 있게 해준다. 어셈블리도 볼수 있다.

 

fwrite(&st,sizeof(st),1,fp); 레코드 즉 구조체 파일을 파일에 기록해준다.

dat파일로 비아너리로 파일을 저장하여 사용 하면 용량이 줄고 구조체를 저장하고 읽어올수있다.

fread(&st,sizeof(st),1,fp); 파일에서 레코드를 읽어온다 즉 구조체를 읽어온다.

 

임의 접근 fseek() 파일내의 임의의 위치에 바로 접근할수 있다

int fseek(FILE *fp,long,offset,int origin);

 

 

#include<stdio.h>
#include<stdlib.h>

void main()

 int *j;
 *j=3;//에러 참조되는 주소안에 값을 넣는것인데. 주소를 정확히 가지고 잇지 않다.
 int *i=(int *)malloc(sizeof(int));
 *i=3;// malloc으로 스택영역에 저장되는 값이 있으므로 3이 저장된다.

 printf("%d\n",*i);// 값이 나옴
 free(i);// malloc으로 잡힌 영역을 없앤다.
 printf("%d",*i);// 공간이 날라갔기때문에 값이 나오지 않는다.
}


반응형

'OtherLanguage > C' 카테고리의 다른 글

c# IComparer  (0) 2013.12.12
구조체와 typedef 자료형 선언  (0) 2010.06.04
c언어 필기노트  (0) 2010.06.01
반응형

[ [ c언어 ] ] 구조체 자료형 선언 

TYPEDEF

typedef 로 자료형을 선언한다

typedef int INT >> INT 는 int 의 자료형을 가진다.

비교) define MAX 20; 은 상수를 정의 하는것

 

구조체

 구조체 안에 자기가 만글고 싶은 구조로 자료형을 선언하여 이용할수 있다

struct student{
char name[20];
int num;
int math;
};

로 include 와 main 문 사이에 선언되어야 한다 이의 이용은  struct student a;로 int a;처럼 사용한다
typedef struct student{}st; 로 자료형 명을 typedef를 이용하여 st로 축약하여 사용할수있다.
구조체 안에 있는 속성 자료에 접근 하기 위해서는 위의 a에서 선언되었을때 a.name 으로 접근할수있다.만약에 student를 st *p로 주소를 받았을때 포인트로 부터 속성에 접근할때는 p->name을 접근할수있다.

 

간단한 예제 프로그램

 #include<stdio.h>
typedef struct{
 char name[20];
 int english;
 int math;
 float average;
}STUDENT;
int main(void){
 STUDENT st;

 printf("please enter studnet name : ");
 fgets(st.name,20,stdin);
 printf("please enter english score : ");
 scanf("%d",&st.english);
 printf("please enter math score : ");
 scanf("%d",&st.math);
 
 st.average=(float)(st.english+st.math)/2;
 printf("Student name: %s\n",st.name);
 printf("average : %6.3f\n",st.average);


 return 0;
}

반응형

'OtherLanguage > C' 카테고리의 다른 글

c# IComparer  (0) 2013.12.12
20100609 c언어 정리  (0) 2010.06.09
c언어 필기노트  (0) 2010.06.01
반응형

[[c언어]]

1. 포인트 변수

*p로 나타내며 *를 가지므로 p는 포인트형 변수이다.
이는 다른 자료형과 다른 자료형이다.
이 포인트형 변수는 다른 자료형 변수의 주소값을 가질수 있다.
int *p;
p=(int)&a;
로써 p변수는 a의 &를 통해 주소값을 가져올수 있다.
여기서 *p는 p가 가지는 주소가 가지는 값을 가르킨다.


=>*(아스트릭크)의 쓰임 (1)선언 (2)참조
+심볼테이블+
+메모리 모양->스택영역+
+도식형 그림+

포인트 변수는 4바이트의 크기를 가진다.
포인트 변수의 자료형은 가르킬수 있는 값을 제한한다.

char 형 포인터 변수 p는 스트링형 값을 받을수있다. 다른값은 x

strlen("asdf")<=문자열의 길이를 구하는 함수
redhat linux 9 <= 리눅스책 추천 

http://www.winapi.co.kr/ <== c와 c++언어의 api를 알아볼수있는 한글 검색 사이트 

strcmp(string1,string2,) ; 문자열을 비교 같으면 1 틀리면 0을 반환한다
strcpy(string1,string2); string2의 값을string1에 복사해서 덮겠다 

반응형

'OtherLanguage > C' 카테고리의 다른 글

c# IComparer  (0) 2013.12.12
20100609 c언어 정리  (0) 2010.06.09
구조체와 typedef 자료형 선언  (0) 2010.06.04

+ Recent posts