Không quá khó để giải quyết bằng một lớp lót, nhưng thực tế là giải pháp thư viện chuẩn.
#include <bitset>
#include <algorithm>
std::vector<int> get_bits(unsigned long x) {
std::string chars(std::bitset< sizeof(long) * CHAR_BIT >(x)
.to_string< char, std::char_traits<char>, std::allocator<char> >());
std::transform(chars.begin(), chars.end(),
std::bind2nd(std::minus<char>(), '0'));
return std::vector<int>(chars.begin(), chars.end());
}
C++ 0x thậm chí còn dễ dàng hơn!
#include <bitset>
std::vector<int> get_bits(unsigned long x) {
std::string chars(std::bitset< sizeof(long) * CHAR_BIT >(x)
.to_string(char(0), char(1)));
return std::vector<int>(chars.begin(), chars.end());
}
Đây là một trong những góc kỳ lạ hơn của thư viện. Có lẽ thực sự những gì họ đang lái xe là serialization.
cout << bitset<8>(x) << endl; // print 8 low-order bits of x
Tôi nghĩ bạn có nghĩa là đại diện _bit_. – fbrereto
Đây có phải là bài tập về nhà không? – fbrereto
Cho rằng một số nguyên là một kích thước cố định, tại sao không chỉ sử dụng một mảng đơn giản? –