LRU를 만들고 값 순서를 유지하려고합니다.C 배열에 null을 넣는 순서를 변경하십시오.
그래서 P4가 (항목 = "P1", "P3", "P4", null
)
null
색인에 추가 내가 배열을 items = "P1", "P3", null, null
- 이 있다고 할 수 있습니다. P1의 자리는 내가 다음과 같이 모든 이동하는 방법 (내 질문)가 필요합니다
null
(항목 =null, "P3", "P4", null
) (항목 ="P3", "P4", null, null
)로 이동 있도록- 그러나 다음 P1이 다시 오실
- 그리고 P1을 추가 가장 낮은
null
인덱스 (항목 ="P3", "P4", "P1", null
) 등 - 그리고,
LRU
이 items = items.Where(s => !String.IsNullOrEmpty(s)).ToArray();
을 사용하는 게시물을 찾았지만 배열 크기를 그대로 유지하려면 null
을 모두 제거합니다. ,
당신은 다시 구축 할 지금, 처음부터 전체 배열을하고, 매 항목마다 아무것도 변경을 다시 채우기 싶지 않아요. 그것은 단지 규모가 조정되지 않습니다. – Servy
https://gist.github.com/nakhli/6686251 –
LRU는 [최소 최근 사용 횟수]를 의미합니다 (http://en.wikipedia.org/wiki/Cache_algorithms#LRU). // 배열을 사용하는 이유는 무엇입니까? 'List'을 대신 사용했다면'.Remove ("P1")','.Add ("P1")'할 수 있습니다. '.Remove' 메쏘드는 항목이 아무 곳에도 없을 때'List <>'를 변경하지 않고 OK라는 것을 기억하십시오. 구현이 더 쉬울 것입니다. 여전히 비효율적입니다. 성능에 문제가 있다면 (@Servy가 말한 것과 같이), 어떤 종류의 [linked list] (http://en.wikipedia.org/wiki/Linked_list)를 사용하십시오. –