개발하다보면, 수많은 자료형을 접하고 만들게 된다.


상용 프로그램을 만들 때


단, 하나의 솔루션으로 풀 수 있는 것은 없다.


그렇다고 매우 어려운 것은 아니다.


보통 하나의 프로토콜은


복합적인 자료형의 집합인 하나의 클래스로 해결된다.


사람이 많아지고 히스토리 관리가 안되면 해당 클래스는 비대하고 비효율적이지만


하드웨어가 워낙 빨라 큰 문제가 되지 않는다.


그러나 사용자 수가 늘어나고 보이지 않는 비용이 늘어날 수록 비효율적이 되므로


늘 리팩토링을 하고 최적화를 항상 고민해야 한다.



그리고 아토믹한 자료형을 항상 살펴봐야 한다.


해당 솔루션에 인덱스가 필요한지, 동기화를 계속 해야할지, 정렬이 중요한지, 등


동기화 때문에 만들어진 솔루션을 사용할 일은 많이 없다.


그래서 어떻게 만들어져 있는지 구현 방법을 알아야 하고 그 모든 것의 기본은


malloc을 이해하는 것과 linked list를 구현 하는데서 출발한다.








자바에서 파라미터 넘길 때 스택도 좋다.


오버로딩도 되지만... 파라미터 바꾸면, 연계된 너무 많은 것들이 바뀌어서 ^^;;


Stack<double> s = new Stack<double>();

s.Push(10.5);

s.Push(3.54);

s.Push(4.22);


double val = s.Pop();


C++, C# 등... 여러가지 하니 헷갈린다.


Queue


Queue<int> q = new Queue<int>();

q.Enqueue(120);

q.Enqueue(130);

q.Enqueue(150);


int next = q.Dequeue();

next = q.Dequeue();


Array


int sum = 0;

int[] numbs = new int[10];


Random rand = new Random();

for( int i=0; i < nums.Length; i++)

{

nums[i] = rand.Next() % 100;

}


for (int i=0; i<nums.Length; i++)

{

sum += nums[i];

}

Console.WriteLine(sum);



LinkedList




LinkedList<string> list = new LinkedList<string>();

list.AddLast(“Apple”);

list.AddLast(“Banana”);

list.AddLast(“Lemon”);


LinkedListNode<string> node = list.Find(“Banana”);

LinkedListNode<string> newNode = new LinkedListNode<string>(“Grape”);


list.AddAfter(node, newNode);


list.ToList().forEach(p=> Console.WriteLine(p));


foreach(var m in list)

{

Console.WriteLine(m);

}


Dynamic Array


ArrayList


ArrayList myList = new ArrayList();

myList.Add(90);

myList.Add(88);

myList.Add(75);


int val = (int) myList[1];


List<T> Class


List<int> myList = new List<int>();

myList.Add(90);

myList.Add(88);

myList.Add(75);

int val = myList[1];



SortedList<TKey, TValue> Class


SortedList<int, string> list = new SortedList<int, string>();

list.Add(1001, “Tim”);

list.Add(1020, “Ted”);

list.Add(1010, “Kim”);


string name = list[1001];


foreach(KeyValuePair<int, string> kv in list)

{

Console.WriteLine(“{0}:{1}”, kv.Key, kv.Value);

}




이제 진짜 iOS만 해야지.




'Objective-C, SQLite3' 카테고리의 다른 글

스위프트 소스 중에 가장 중요한 소스 from swift.org  (0) 2019.02.02
gcc -static -> Visual studio  (0) 2019.02.02
mac bluetooth service on and off  (0) 2019.02.02
working on graph  (0) 2019.02.02
JAVA C/C++ Objective-C Swift  (0) 2019.02.02

+ Recent posts