2013-02-17 2 views
-2

질문 1)C++ 스파 스 벡터

I C에서 배가 큰 스파 스 벡터를 ++, I 효율적 벡터의 비 영 요소 인덱스를 분석 할 필요가있다. 나는 분명히 길이에 걸쳐 반복 할 수 있고 그것을 할 수있는 더 좋은 방법은 무엇입니까?

+1

[무엇을 시도 했습니까?] (http://whathaveyoutried.com) –

+0

두 번째 질문이 있으면 두 번째 게시물을 작성하십시오. –

+0

나는 그 일을 반복하고 해결하는 것은 사소한 일이다. 거기에 더 좋은 방법이 있습니까? –

답변

3

복식 벡터의 구성에 대한 특별한 지식이없는 경우 (예 : 정렬 됨), 전체 루프가 가장 효율적입니다.

물론 eladidan이 제안한 구조의 변화는 고려해야 할 사항 일 것입니다.

2

나는 C++에서 두 배의 큰 희소 벡터를 가지고 있기 때문에 벡터에서 0이 아닌 요소의 인덱스를 효율적으로 파싱해야합니다. 나는 분명히 길이에 걸쳐 반복 할 수 있고 그것을 할 수있는 더 좋은 방법은 무엇입니까? 벡터가 (n 제로가 아닌 요소와 N의 수는 n = o(N)이 벡터의 크기입니다) 정말 드문 드문 경우

std::map<int,double> 또는 std::unordered_map<int,double>에서 그것을 표현하는 것은 아마 가장 좋습니다. std::map 방법을 사용하면 O(log(n))에 요소를 찾을 수 있습니다. std::unordered_map을 사용하면 찾기 조작은 O(1)의 상각 시간이 걸립니다. 두 경우 모두, 0이 아닌 요소의 수는 단순히 컨테이너의 크기입니다. 두 방법 모두 O(N) 대신에 O(n) 공간을 사용합니다.