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

📄 indirect.h

📁 c++经典教材 Blitz++ v0.8
💻 H
📖 第 1 页 / 共 2 页
字号:
template<typename T_container>CartesianProduct<TinyVector<int,10>,T_container,10>indexSet(const T_container& container0, const T_container& container1,    const T_container& container2, const T_container& container3,    const T_container& container4, const T_container& container5,    const T_container& container6, const T_container& container7,    const T_container& container8, const T_container& container9){    return CartesianProduct<TinyVector<int,10>,T_container,10>(        const_cast<T_container&>(container0),         const_cast<T_container&>(container1),         const_cast<T_container&>(container2),        const_cast<T_container&>(container3),        const_cast<T_container&>(container4),        const_cast<T_container&>(container5),        const_cast<T_container&>(container6),        const_cast<T_container&>(container7),        const_cast<T_container&>(container8),        const_cast<T_container&>(container9));}template<typename T_container>CartesianProduct<TinyVector<int,11>,T_container,11>indexSet(const T_container& container0, const T_container& container1,    const T_container& container2, const T_container& container3,    const T_container& container4, const T_container& container5,    const T_container& container6, const T_container& container7,    const T_container& container8, const T_container& container9,    const T_container& container10){    return CartesianProduct<TinyVector<int,11>,T_container,11>(        const_cast<T_container&>(container0),         const_cast<T_container&>(container1),         const_cast<T_container&>(container2),        const_cast<T_container&>(container3),        const_cast<T_container&>(container4),        const_cast<T_container&>(container5),        const_cast<T_container&>(container6),        const_cast<T_container&>(container7),        const_cast<T_container&>(container8),        const_cast<T_container&>(container9),        const_cast<T_container&>(container10));}// Mixture of singletons and containers, e.g. A[indexSet(I,3,K)]// cp_findContainerType<T1,T2,T3,...,Tn>::T_container// The set of parameters T1, T2, T3, ... Tn is a mixture of// int and T_container.  This traits class finds the container// type, and sets T_container.//// e.g. cp_findContainerType<int,int,list<int>,int>::T_container is list<int>//      cp_findContainerType<int,deque<int>,deque<int>>::T_container //        is deque<int>template<typename T1, typename T2, typename T3=int, typename T4=int,         typename T5=int, typename T6=int, typename T7=int, typename T8=int,         typename T9=int, typename T10=int, typename T11=int>struct cp_findContainerType {    typedef T1 T_container;};template<typename T2, typename T3, typename T4, typename T5, typename T6,         typename T7, typename T8, typename T9, typename T10, typename T11>struct cp_findContainerType<int,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11> {    typedef _bz_typename        cp_findContainerType<T2,T3,T4,T5,T6,T7,T8,T9,T10,T11>::T_container        T_container;};// The cp_traits class handles promotion of singleton integers to// containers.  It takes two template parameters://    T = argument type//    T2 = container type// If T is an integer, then a container of type T2 is created and the// integer is inserted.  This container is returned.// Otherwise, T is assumed to be the same type as T2, and the original// container is returned.template<typename T, typename T2>struct cp_traits {    typedef T T_container;    static const T_container& make(const T& x)    { return x; }};template<typename T2>struct cp_traits<int,T2> {    typedef T2 T_container;    static T2 make(int x)    {         T2 singleton;        singleton.push_back(x);        return singleton;    }};// These versions of indexSet() allow mixtures of integer// and container arguments.  At least one integer must be// specified.template<typename T1, typename T2>CartesianProduct<TinyVector<int,2>, _bz_typename     cp_findContainerType<T1,T2>::T_container,2> indexSet(const T1& c1, const T2& c2){    typedef _bz_typename cp_findContainerType<T1,T2>::T_container        T_container;    return CartesianProduct<TinyVector<int,2>, T_container, 2>(          cp_traits<T1,T_container>::make(c1),          cp_traits<T2,T_container>::make(c2));}template<typename T1, typename T2, typename T3>CartesianProduct<TinyVector<int,3>, _bz_typename    cp_findContainerType<T1,T2,T3>::T_container, 3>indexSet(const T1& c1, const T2& c2, const T3& c3){    typedef _bz_typename cp_findContainerType<T1,T2,T3>::T_container        T_container;    return CartesianProduct<TinyVector<int,3>, T_container, 3>(          cp_traits<T1,T_container>::make(c1),          cp_traits<T2,T_container>::make(c2),          cp_traits<T3,T_container>::make(c3));}template<typename T1, typename T2, typename T3, typename T4>CartesianProduct<TinyVector<int,4>, _bz_typename    cp_findContainerType<T1,T2,T3,T4>::T_container, 4>indexSet(const T1& c1, const T2& c2, const T3& c3, const T4& c4){    typedef _bz_typename cp_findContainerType<T1,T2,T3,T4>::T_container        T_container;    return CartesianProduct<TinyVector<int,4>, T_container, 4>(          cp_traits<T1,T_container>::make(c1),          cp_traits<T2,T_container>::make(c2),          cp_traits<T3,T_container>::make(c3),          cp_traits<T4,T_container>::make(c4));}template<typename T1, typename T2, typename T3, typename T4, typename T5>CartesianProduct<TinyVector<int,5>, _bz_typename    cp_findContainerType<T1,T2,T3,T4,T5>::T_container, 5>indexSet(const T1& c1, const T2& c2, const T3& c3, const T4& c4, const T5& c5){    typedef _bz_typename cp_findContainerType<T1,T2,T3,T4,T5>::T_container        T_container;    return CartesianProduct<TinyVector<int,5>, T_container, 5>(          cp_traits<T1,T_container>::make(c1),          cp_traits<T2,T_container>::make(c2),          cp_traits<T3,T_container>::make(c3),          cp_traits<T4,T_container>::make(c4),          cp_traits<T5,T_container>::make(c5));}template<typename T1, typename T2, typename T3, typename T4, typename T5,         typename T6>CartesianProduct<TinyVector<int,6>, _bz_typename    cp_findContainerType<T1,T2,T3,T4,T5,T6>::T_container, 6>indexSet(const T1& c1, const T2& c2, const T3& c3, const T4& c4, const T5& c5,    const T6& c6){    typedef _bz_typename cp_findContainerType<T1,T2,T3,T4,T5,T6>::T_container        T_container;    return CartesianProduct<TinyVector<int,6>, T_container, 6>(          cp_traits<T1,T_container>::make(c1),          cp_traits<T2,T_container>::make(c2),          cp_traits<T3,T_container>::make(c3),          cp_traits<T4,T_container>::make(c4),          cp_traits<T5,T_container>::make(c5),          cp_traits<T6,T_container>::make(c6));}template<typename T1, typename T2, typename T3, typename T4, typename T5,         typename T6, typename T7>CartesianProduct<TinyVector<int,7>, _bz_typename    cp_findContainerType<T1,T2,T3,T4,T5,T6,T7>::T_container, 7>indexSet(const T1& c1, const T2& c2, const T3& c3, const T4& c4, const T5& c5,    const T6& c6, const T7& c7){    typedef _bz_typename        cp_findContainerType<T1,T2,T3,T4,T5,T6,T7>::T_container        T_container;    return CartesianProduct<TinyVector<int,7>, T_container, 7>(          cp_traits<T1,T_container>::make(c1),          cp_traits<T2,T_container>::make(c2),          cp_traits<T3,T_container>::make(c3),          cp_traits<T4,T_container>::make(c4),          cp_traits<T5,T_container>::make(c5),          cp_traits<T6,T_container>::make(c6),          cp_traits<T7,T_container>::make(c7));}template<typename T1, typename T2, typename T3, typename T4, typename T5,         typename T6, typename T7, typename T8>CartesianProduct<TinyVector<int,8>, _bz_typename    cp_findContainerType<T1,T2,T3,T4,T5,T6,T7,T8>::T_container, 8>indexSet(const T1& c1, const T2& c2, const T3& c3, const T4& c4, const T5& c5,    const T6& c6, const T7& c7, const T8& c8){    typedef _bz_typename        cp_findContainerType<T1,T2,T3,T4,T5,T6,T7,T8>::T_container        T_container;    return CartesianProduct<TinyVector<int,8>, T_container, 8>(          cp_traits<T1,T_container>::make(c1),          cp_traits<T2,T_container>::make(c2),          cp_traits<T3,T_container>::make(c3),          cp_traits<T4,T_container>::make(c4),          cp_traits<T5,T_container>::make(c5),          cp_traits<T6,T_container>::make(c6),          cp_traits<T7,T_container>::make(c7),          cp_traits<T8,T_container>::make(c8));}template<typename T1, typename T2, typename T3, typename T4, typename T5,         typename T6, typename T7, typename T8, typename T9>CartesianProduct<TinyVector<int,9>, _bz_typename    cp_findContainerType<T1,T2,T3,T4,T5,T6,T7,T8,T9>::T_container, 9>indexSet(const T1& c1, const T2& c2, const T3& c3, const T4& c4, const T5& c5,    const T6& c6, const T7& c7, const T8& c8, const T9& c9){    typedef _bz_typename        cp_findContainerType<T1,T2,T3,T4,T5,T6,T7,T8,T9>::T_container        T_container;    return CartesianProduct<TinyVector<int,9>, T_container, 9>(          cp_traits<T1,T_container>::make(c1),          cp_traits<T2,T_container>::make(c2),          cp_traits<T3,T_container>::make(c3),          cp_traits<T4,T_container>::make(c4),          cp_traits<T5,T_container>::make(c5),          cp_traits<T6,T_container>::make(c6),          cp_traits<T7,T_container>::make(c7),          cp_traits<T8,T_container>::make(c8),          cp_traits<T9,T_container>::make(c9));}template<typename T1, typename T2, typename T3, typename T4, typename T5,         typename T6, typename T7, typename T8, typename T9, typename T10>CartesianProduct<TinyVector<int,10>, _bz_typename    cp_findContainerType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10>::T_container, 10>indexSet(const T1& c1, const T2& c2, const T3& c3, const T4& c4, const T5& c5,    const T6& c6, const T7& c7, const T8& c8, const T9& c9, const T10& c10){    typedef _bz_typename        cp_findContainerType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10>::T_container        T_container;    return CartesianProduct<TinyVector<int,10>, T_container, 10>(          cp_traits<T1,T_container>::make(c1),          cp_traits<T2,T_container>::make(c2),          cp_traits<T3,T_container>::make(c3),          cp_traits<T4,T_container>::make(c4),          cp_traits<T5,T_container>::make(c5),          cp_traits<T6,T_container>::make(c6),          cp_traits<T7,T_container>::make(c7),          cp_traits<T8,T_container>::make(c8),          cp_traits<T9,T_container>::make(c9),          cp_traits<T10,T_container>::make(c10));}template<typename T1, typename T2, typename T3, typename T4, typename T5,         typename T6, typename T7, typename T8, typename T9, typename T10,         typename T11>CartesianProduct<TinyVector<int,11>, _bz_typename    cp_findContainerType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11>::T_container, 11>indexSet(const T1& c1, const T2& c2, const T3& c3, const T4& c4, const T5& c5,    const T6& c6, const T7& c7, const T8& c8, const T9& c9, const T10& c10,    const T11& c11){    typedef _bz_typename        cp_findContainerType<T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11>::T_container        T_container;    return CartesianProduct<TinyVector<int,11>, T_container, 11>(          cp_traits<T1,T_container>::make(c1),          cp_traits<T2,T_container>::make(c2),          cp_traits<T3,T_container>::make(c3),          cp_traits<T4,T_container>::make(c4),          cp_traits<T5,T_container>::make(c5),          cp_traits<T6,T_container>::make(c6),          cp_traits<T7,T_container>::make(c7),          cp_traits<T8,T_container>::make(c8),          cp_traits<T9,T_container>::make(c9),          cp_traits<T10,T_container>::make(c10),          cp_traits<T11,T_container>::make(c11));}BZ_NAMESPACE_END#endif // BZ_ARRAY_INDIRECT_H

⌨️ 快捷键说明

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