我用
std::fill(foo.begin() , foo.end() , 0);
解決我的問題(不知道這是否是更好然後升壓::分配,因爲我無法應用它)。
與boo
我仍然有問題,因爲 std :: fill(boo.begin() - > begin(),boo.end() - > end(),0); 通編譯,但是當我運行我的程序,我得到以下錯誤:
/usr/include/boost/multi_array/base.hpp:178: Reference boost::detail::multi_array::value_accessor_one::access(boost::type, boost::multi_array_types::index, TPtr, const boost::multi_array_types::size_type*, const boost::multi_array_types::index*, const boost::multi_array_types::index*) const [with Reference = unsigned int&, TPtr = unsigned int*, T = unsigned int]: Assertion `size_type(idx - index_bases[0]) < extents[0]' failed.Blockquote
這裏是一個短代碼:
#include <iomanip>
#include "boost/multi_array.hpp"
#include <iostream>
namespace vec {
typedef boost::multi_array<unsigned int, 1> uint_1d_vec_t;
typedef boost::multi_array<unsigned int, 2> uint_2d_vec_t;
typedef uint_1d_vec_t::index index_1d_t;
typedef uint_2d_vec_t::index index_2d_t;
}
using namespace std;
int main() {
unsigned int num_elements, num_bits, max_runs, m;
num_bits = 12;
max_runs = 5000;
m = 2;
num_elements = (1 << num_bits);
double kappa = 79;
vec::uint_1d_vec_t foo(boost::extents[ static_cast<vec::index_1d_t>(num_elements) ] );
vec::uint_2d_vec_t boo(boost::extents[ static_cast<vec::index_2d_t>(num_elements) ][ static_cast<vec::index_2d_t>(kappa) ]);
std::fill(foo.begin() , foo.end() , 0);
std::fill(boo.begin()->begin() , boo.end()->end() , 0);
std::cout << "Done" << std::endl;
return EXIT_SUCCESS;
}
@Octavian:謝謝,但在標題中添加標籤與清理相反。 – 2012-01-31 17:19:59
@LightnessRacesinOrbit這似乎是個人觀點。 [我如何寫一個好的標題?](http://meta.stackexchange.com/questions/10647/how-do-i-write-a-good-title)。 – 2012-01-31 19:00:43
@OctavianDamiean:這個主題的主流觀點是標題中的標籤不好。我們已經有了一個一致的索引標籤系統。 Mods在過去也支持我進行這樣的編輯。當然,不能取悅每個人。 – 2012-01-31 19:47:14