vector

clang_complete に定義ジャンプの機能が実装されたぽい

最近知ったんですが、clang_complete に定義へジャンプする機能が実装された(されはじめた)ぽいです。 ジャンプしたい名前にカーソルを合わせて で定義へと飛ぶことが出来ます。 で、わたしの環境でも軽く試してみたんですが、動作するケースもあれば動作…

各 vec 型に対する次元数の取得方法

関連:クラスに持たせる定数について http://d.hatena.ne.jp/gintenlabo/20101214/1292329739 現状の個人的なまとめ。 vec 型の次元数を取得するメタ関数 dimension の実装手段をいくつか。 使い方はこんな感じ。 struct my_vec{ float x, y, z; }; BOOST_ST…

ライブラリ構成のメモ書き

以前作成していた vec ライブラリをつくり直す改良するのにしたがって、ライブラリの構成も大幅に変えようと思うので、そのメモ書き。 大まかな作りは、boost や pstade なんか参考にする予定。 覚え書き バージョン管理 使用するのは自分ひとり(予定) テ…

ベクトルの要素へのアクセス 〜その5〜

[ベクトル型の例] boost::array<float, 3> array_vec; std::valarray<float> valarray_vec; struct my_vec{ float x, y, z; }; 0.各アクセッサを使用するために最低限必要な実装 x, y, z の要素の型を取得すために vec_value の特殊化を行います。 [使用例] my_vec vec; vec_</float></float,>…

ベクトルの要素へのアクセス 〜その4〜

まとめ イテレータによるアクセス iterator を使用して、イテレーティブにアクセスを行う インデックスによるアクセスと、要素への直接アクセスも使用できる インデックスでアクセス インデックスを使用して、配列の様にアクセスを行う 要素への直接アクセス…

ベクトルの要素へのアクセス 〜その3〜

#include <boost/iterator_adaptors.hpp> #include <d3dx9.h> struct my_vec{ float x, y, z; }; //----------------------------------------------------------------------------- template<typename T> struct vec_traits; template<> struct vec_traits<my_vec>{ static const int dimension = 3; typedef float va</my_vec></typename></d3dx9.h></boost/iterator_adaptors.hpp>…

ベクトル型の要素へのアクセス 〜その2〜

#include <vector> #include <d3dx9.h> #include <pstade/oven/at.hpp> #include <pstade/oven/make_range.hpp> template<typename T> auto begin(T& v)->decltype(&v.x){ return &v.x; } template<typename T> auto end(T& v)->decltype(&v.z){ return (&v.z)+1; } template<typename T> auto at(T& v, int n) ->decltype(…</typename></typename></typename></pstade/oven/make_range.hpp></pstade/oven/at.hpp></d3dx9.h></vector>

ベクトル型の要素へのアクセス

ベクトル型へ汎用的にアクセスを行うための仕組みをいくつか考えてみました。 戻り値に関しては、ひとまず、float で決め打ちしています。 (こっちもぼちぼち考えます。) 案1.全てのベクトル型に対して、関数をオーバーロードする template<typename T, int N> T& at_x(boost:</typename>…

ベクトル型いろいろ

#include <iostream> #include <boost/tuple/tuple.hpp> #include <boost/array.hpp> #include <boost/polygon/polygon.hpp> #include <boost/numeric/ublas/vector.hpp> #include <NxPhysicsSDK.h> #include <d3dx9.h> #include <opencv/cv.h> struct my_vec_type{ float x, y, z; }; int main(){ // ユーザー定義 my_vec_type m…</opencv/cv.h></d3dx9.h></nxphysicssdk.h></boost/numeric/ublas/vector.hpp></boost/polygon/polygon.hpp></boost/array.hpp></boost/tuple/tuple.hpp></iostream>

vec::pointer

ベクトルの先頭配列のポインタを返します。 #include #include "vec/vec.hpp" #include "vec/extension/pointer.hpp" #include "vec/extension/dimension.hpp" namespace vec = kmt_ex::math::vec; typedef vec::vec vec3; int main(){ vec3 v; // 配列によ…

vec::dimension_

vec::dimensionのインスタンス版。 インスタンスから次元数の取得を行います。 #include #include "vec/vec.hpp" #include "vec/extension/dimension.hpp" namespace vec = kmt_ex::math::vec; typedef vec::vec vec3; int main(){ /** インスタンスから次元…

vec::extension::visit

重要なファクターその3 visitorパターンを利用して vec へ対して操作を行っていきます。 例によって operator| で簡易接続。 まぁここら辺は殆ど『C++テンプレートテクニック』を真似ているだけなんですが…。 #include #include #include #include "vec/vec…

vec::dimension

ベクトルの次元数の取得を行います。 #include #include #include "vec/vec.hpp" #include "vec/type_traits/dimension.hpp" #include "vec/preprocessor/make_type_traits_value.hpp" #include "vec/preprocessor/make_type_traits_is_vec.hpp" /** D3DVECT…

KMT_EX_PP_MATH_VEC_MAKE_TYPE_TRAITS_VALUE

例によって、マクロを使用して、is_vec の自動生成を行います。 #include #include #include "vec/vec.hpp" #include "vec/type_traits/is_vec.hpp" #include "vec/preprocessor/make_type_traits_is_vec.hpp" /** D3DVECTOR の特殊化 */ KMT_EX_PP_MATH_VEC…

vec.is_vec

重要なファクターその2。 型がベクトルかどうかの判断を行います。 #include #include "vec/vec.hpp" #include "vec/type_traits/is_vec.hpp" namespace vec = kmt_ex::math::vec; typedef vec::vec vec3; int main(){ std::cout ::value ::value 例によっ…

プリプロセッサで簡易生成

vec::value のテンプレートの特殊化をプリプロセッサで簡易生成する為のコード。 DirectX とかの定義が楽になる…か? #include #include #include "vec/type_traits/value.hpp" #include "vec/preprocessor/make_type_traits_value.hpp" /** D3DVECTOR の特…

ベクトルの型情報の取得

重要なファクターその1 ベクトルが保持している型情報の取得を行います。 #include #include "vec/vec.hpp" #include "vec/type_traits/value.hpp" namespace vec = kmt_ex::math::vec; int main(){ typedef vec::vec v_float; typedef vec::vec v_double; …

そろそろ再開

なんかかなり放置してたけど最近やっと再開したので投稿。 時間もあるので(いや、そんな事やってる場合じゃないけど)ちょくちょくやってみようかと。 とりあえず、コア部分だけ。 templatevalue_t = float > struct vec{ typedef value_t value_t; enum{ d…

Vector 〜その2〜

ずいぶん長い明日になってしまった…。 1回書かないと間が空いてしまうのは悪い癖。って事で前回の続き。 #include #include #include #include // ############################################################################# // 前回作ったベクトルク…