給定一串字符串我試圖創建一個程序,可以模仿一個基於我的輸入加權分佈的僞隨機行爲。問題與std :: piecewise_constant_distribution和std ::向量
到目前爲止,我想出了這個
#include <iostream>
#include <random>
#include <type_traits>
#include <map>
#include <vector>
#include <string>
#include <initializer_list>
#define N 100
int main()
{
std::vector<std::string> interval{"Bread", "Castle", "Sun"};
std::vector<float> weights { 0.40f, 0.50f, 0.10f };
std::piecewise_constant_distribution<> dist(interval.begin(),
interval.end(),
weights.begin());
std::random_device rd;
std::mt19937 gen(rd()) ;
for(int i = 0; i<N;i++)
{
std::cout << dist(gen) << "\n";
}
return(0);
}
但是這件事情不工作,我不知道爲什麼,的std::piecewise_constant_distribution
平時的使用情況,按照網上的例子,它與std::arrays
,但我試圖用std::vector
來實現它,這是我發現的主要區別。
鏗鏘++錯誤的輸出
/usr/bin/../lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/random.tcc:2409:10: error: no matching member function for
call to 'push_back'
_M_int.push_back(*__bbegin);
~~~~~~~^~~~~~~~~
但因爲在我的代碼沒有明確.push_back
我不明白,我也不會從取之於因爲來獲得調試模板化的課程,這是一場噩夢,我只是從這個開始。
任何人有任何想法爲什麼代碼不起作用?
@taocp是的,我也在IDE內部完成了這個工作,並且帶有一個命令行編譯器接口,這兩個接口都支持C++ 11,沒有什麼變化。 – user2348816 2013-05-13 01:14:11
你在哪裏見過帶字符串的例子?它抱怨,因爲無法在字符串 – 4pie0 2013-05-13 01:22:04
@ restart.localhost.localdomain操作無處,這只是我需要和我想要實現的。 – user2348816 2013-05-13 01:23:23