Похожего реализованы в ответ @ АРИ, я хочу сказать, что уже есть решение подталкивания, boost::array
решения вашей проблемы:
boost::array<char, 8> f() {
boost::array<char, 8> bin;
for(int i = 7; i >= 0; i--) {
int ascii = 'a';
if(2^i-ascii >= 0) {
bin[i] = '1';
ascii = 2^i-ascii;
} else {
bin[i] = '0';
}
}
}
...
boost::array<char, 8> a(f());
[Я не уверен, что вы хотите сделать с этим алгоритмом, хотя , но обратите внимание, что я думаю, что вы хотите сделать 1 << i
(побитовое смещение) вместо 2^i
который не экспоненцирование в C++.]
подталкивания массив нормальный массив, просто завернутые в структуры, так что вы не теряют производительности, что-то-никогда. Он также будет доступен в следующей версии C++ как std::array
, и очень легко сделать сам, если вам не нужен begin()
/size()
/data()
-сагар, который он добавляет (чтобы быть контейнером). Просто идти с самим основным:
template<typename T, size_t S>
struct array {
T t[S];
T& operator[](ptrdiff_t i) { return t[i]; }
T const& operator[](ptrdiff_t i) const { return t[i]; }
};
Но, как обычно, использовать инструменты уже написанные другими людьми, в данном случае boost::array
. Он также получил преимущество в том, совокупности (именно поэтому он не имеет пользовательскую объявленную конструкторы), так что это позволяет инициализировать с брекет приложенного списком:
boost::array<int, 4> a = {{ 1, 2, 3, 4 }};
Еще одна идея - использовать новый [] для создания массива и удаления [], чтобы удалить его. – 2009-05-10 18:45:10
@Neil Butterworth - Как он отличается от того, что сказал Зифре? – Javier
В C++ новые и удаленные отличаются от новых [] и delete [] – 2009-05-10 18:52:00