Changeset 2990
- Timestamp:
- 07/02/08 06:39:29 (2 months ago)
- Location:
- trunk/linbox/linbox/matrix
- Files:
-
- 2 modified
-
sparse.h (modified) (2 diffs)
-
sparse.inl (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/linbox/linbox/matrix/sparse.h
r2814 r2990 557 557 { return ConstRawIterator (_A.end (), _A.back ().end (), _A.end ()); } 558 558 559 560 561 /* Generic trait for iterators without type */ 562 template<typename U> 563 struct IteratorValueType { 564 typedef typename U::value_type value_type; 565 }; 566 567 template<typename X> 568 struct IteratorValueType<const X*> { 569 typedef X value_type; 570 }; 571 572 /* Generic trait for iterators without type */ 573 574 575 559 576 template <class RepIterator, class RowIdxIterator> 560 577 class _RawIndexedIterator … … 563 580 // // typedef std::pair<size_t, size_t> value_type; 564 581 // typedef typename RowIdxIterator/*::value_type*/::second_type value_type; 565 typedef typename RowIdxIterator::value_type::second_type value_type; 582 // typedef typename RowIdxIterator::value_type::second_type value_type; 583 typedef typename IteratorValueType< RowIdxIterator >::value_type::second_type value_type; 566 584 567 585 _RawIndexedIterator (size_t idx, const RepIterator &i, const RowIdxIterator &j, const RepIterator &A_end) -
trunk/linbox/linbox/matrix/sparse.inl
r2814 r2990 711 711 ::setEntry (size_t i, size_t j, const Element &value) 712 712 { 713 typedef typename Row::value_type value_type; 713 714 Row &v = _A[i]; 714 715 typename Row::iterator iter; 715 716 716 717 if (v.size () == 0) { 717 v.push_back ( std::pair <size_t, Element>(j, value));718 v.push_back ( value_type(j, value)); 718 719 } else { 719 720 iter = std::lower_bound (v.begin (), v.end (), j, VectorWrapper::CompareSparseEntries<Element> ()); 720 721 721 722 if (iter == v.end () || iter->first != j) 722 iter = v.insert (iter, std::pair <size_t, Element>(j, value));723 iter = v.insert (iter, value_type(j, value)); 723 724 else 724 725 iter->second = value;
