Я думаю, что BOOST_FOREACH, представленный выше, является хорошим и чистым, однако, существует другая опция с помощью ПОВЫШЕНИЯ также.
#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>
std::map<int, int> m;
std::vector<int> keys;
using namespace boost::lambda;
transform( m.begin(),
m.end(),
back_inserter(keys),
bind( &std::map<int,int>::value_type::first, _1 )
);
copy( keys.begin(), keys.end(), std::ostream_iterator<int>(std::cout, "\n") );
Лично, я не думаю, что этот подход является столь же чистым как подход BOOST_FOREACH в этом случае, но повышение:: лямбда может быть действительно чистой в других случаях.
import platform
platform.architecture()
Из документации Python :
Запрашивает указанный исполняемый файл (по умолчанию в двоичный файл интерпретатора Python) для различная информация об архитектуре.
Возвращает кортеж (биты, связь), который содержать информацию о долоте архитектура и формат связи используется для исполняемого файла. Оба значения возвращаются в виде строк.
Хотя он может работать на некоторых платформах, имейте в виду, что platform.architecture
не всегда является надежным способом определить, работает ли python в 32-разрядной или 64-разрядной версии. В частности, в некоторых мультиархитектурных сборках OS X один и тот же исполняемый файл может работать в любом режиме, как показано в примере ниже. Самый быстрый и безопасный многоплатформенный подход - протестировать sys.maxsize
на Python 2.6, 2.7, Python 3.x.
$ arch -i386 /usr/local/bin/python2.7
Python 2.7.9 (v2.7.9:648dcafa7e5f, Dec 10 2014, 10:10:46)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform, sys
>>> platform.architecture(), sys.maxsize
(('64bit', ''), 2147483647)
>>> ^D
$ arch -x86_64 /usr/local/bin/python2.7
Python 2.7.9 (v2.7.9:648dcafa7e5f, Dec 10 2014, 10:10:46)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform, sys
>>> platform.architecture(), sys.maxsize
(('64bit', ''), 9223372036854775807)