⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init.hpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 HPP
字号:
/* * Copyright (c) 2004 Michael Stevens * Use, modification and distribution are subject to the * Boost Software License, Version 1.0. (See accompanying file * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) *//* * Default construct test when possible */template <class E>struct default_construct{    static void test() {}}; template <class VC>struct default_construct<boost::numeric::ublas::vector_container<VC> >{    static void test ()    {        VC default_constuct;        initialize_vector (default_constuct);        std::cout << "default construct = " << default_constuct << std::endl;    }};template <class MC>struct default_construct<boost::numeric::ublas::matrix_container<MC> >{    static void test ()    {        MC default_constuct;        initialize_vector (default_constuct);        std::cout << "default construct = " << default_constuct << std::endl;    }};/* * Initialise test values in vector/matrix */template<class V>void initialize_vector (V &v) {    typename V::size_type size = v.size ();    for (typename V::size_type i = 0; i < size; ++ i)        v [i] = typename V::value_type (i + 1);}template<class M>void initialize_matrix_impl (M &m, ublas::packed_proxy_tag) {    typename M::size_type size1 = m.size1 ();#ifndef BOOST_UBLAS_NO_NESTED_CLASS_RELATION    for (typename M::iterator1 i = m.begin1(); i != m.end1(); ++ i)        for (typename M::iterator2 j = i.begin(); j != i.end(); ++ j)            *j = typename M::value_type (i.index1() * size1 + j.index2() + 1);#else    for (typename M::iterator1 i = m.begin1(); i != m.end1(); ++ i)        for (typename M::iterator2 j = ublas::begin (i, ublas::iterator1_tag ()); j != ublas::end (i, ublas::iterator1_tag ()); ++ j)            *j = typename M::value_type (i.index1() * size1 + j.index2() + 1);#endif}template<class M>void initialize_matrix_impl (M &m, ublas::sparse_proxy_tag) {    typename M::size_type size1 = m.size1 ();    typename M::size_type size2 = m.size2 ();    for (typename M::size_type i = 0; i < size1; ++ i)        for (typename M::size_type j = 0; j < size2; ++ j)            m (i, j) = typename M::value_type (i * size1 + j + 1.f);}template<class M>void initialize_matrix (M &m) {    initialize_matrix_impl (m, typename M::storage_category());}template<class M>void initialize_matrix (M &m, ublas::lower_tag) {    typename M::size_type size1 = m.size1 ();    typename M::size_type size2 = m.size2 ();    for (typename M::size_type i = 0; i < size1; ++ i) {        typename M::size_type j = 0;        for (; j <= i; ++ j)            m (i, j) = i * size1 + j + 1.f;        for (; j < size2; ++ j)            m (i, j) = 0.f;    }}template<class M>void initialize_matrix (M &m, ublas::upper_tag) {    typename M::size_type size1 = m.size1 ();    typename M::size_type size2 = m.size2 ();    for (typename M::size_type i = 0; i < size1; ++ i) {        typename M::size_type j = 0;        for (; j < i; ++ j)            m (i, j) = 0.f;        for (; j < size2; ++ j)            m (i, j) = i * size1 + j + 1.f;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -