2010-10-30から1日間の記事一覧

boost::multi_index::multi_index_container

#include <iostream> #include <string> #include <boost/multi_index_container.hpp> #include <boost/multi_index/random_access_index.hpp> #include <boost/multi_index/ordered_index.hpp> #include <boost/multi_index/mem_fun.hpp> typedef boost::multi_index::multi_index_container< std::string, boost::multi_i…</boost/multi_index/mem_fun.hpp></boost/multi_index/ordered_index.hpp></boost/multi_index/random_access_index.hpp></boost/multi_index_container.hpp></string></iostream>

メンバ変数のアドレスを template に渡す

C++

#include <iostream> template< typename class_t, typename type, type class_t::*member_ptr > struct member{ typedef type result_t; result_t& operator ()(class_t& rhs) const{ return rhs.*member_ptr; } }; struct vec_t{ float x, y, z; }; member<vec_t, float, &vec_t::x> at_x; mem</vec_t,></iostream>…

メンバ変数のアドレスの取得と呼び出し

C++

#include <iostream> #include <assert.h> struct vec_t{ float x, y, z; }; int main(){ float vec_t::*x_member = &vec_t::x; vec_t vec; // 同じ場所をさしている assert(&(vec.x) == &(vec.*x_member)); vec.*x_member = 10; std::cout << vec.x << std::endl; return 0; } [</assert.h></iostream>…

std::set と std::multiset

C++

#include <iostream> #include <set> #include <pstade/oven/identities.hpp> #include <pstade/oven/io.hpp> int main(){ using pstade::oven::identities; std::set<std::string> strings; strings.insert("crossing"); strings.insert("days"); strings.insert("black"); strings.insert("very"); strings.insert("pie")…</std::string></pstade/oven/io.hpp></pstade/oven/identities.hpp></set></iostream>