我正在尝试模拟像马尔可夫链这样的东西并使用discrete_distribution来模拟状态s_i到s_j的变化.但是,当然,这是一个矩阵,而不是矢量.所以我试试.
std::vector <uint16_t> v {{...},
{...},
...
{...},};
std::vector <std::discrete_distribution <uint16_t> > distr(n, std::distribution <uint16_t> (v.begin(), v.end()) );
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
注意:如果我只尝试1个向量,这是uint16_t的向量
// CHANGE v by v[0]
std::vector<std::discrete_distribution <uint64_t>> distr(1, std::discrete_distribution <uint64_t> (vecs[0].begin(), vecs[0].end()));
Run Code Online (Sandbox Code Playgroud)
根据这个答案
我知道
std::vector <std::discrete_distribution <uint16_t> > distr(n, std::distribution <uint16_t> (v.begin(), v.end()) );
Run Code Online (Sandbox Code Playgroud)
是不正确的,但我说改变v1到v.来证明可以使用离散分布的向量
如果不想使用零初始化向量,是否浪费时间?
我尝试以下代码:
#include <iostream>
#include <vector>
#include <array>
#define SIZE 10
int main()
{
#ifdef VECTOR
std::vector<unsigned> arr(SIZE);
#else
std::array<unsigned, SIZE> arr;
#endif // VECTOR
for (unsigned n : arr)
printf("%i ", n);
printf("\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出:
与矢量
$ g++ -std=c++11 -D VECTOR test.cpp -o test && ./test
0 0 0 0 0 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
与数组
g++ -std=c++11 test.cpp -o test && ./test
-129655920 32766 4196167 0 2 0 4196349 0 1136 0
Run Code Online (Sandbox Code Playgroud)
我也尝试使用clang ++
那为什么要零呢?顺便说一句,我可以不初始化就声明一个向量吗?
我有一个2维数组,当我第一次打印数组的数据时,日期打印正确,但另一次数组[last] [i]的数据从i = 0到last - 1.
显然是一个逻辑错误,但我不明白原因,因为我复制并粘贴了for语句.那么......¿C改变数据?
我使用gcc -std=c99但在此之前我尝试使用C++和cout语句.
#include <stdio.h>
int main(int argc, char *argv[])
{
unsigned int numero_jugaderes = 11;
unsigned int numero = numero_jugaderes - 1;
unsigned int p_a[numero];
float p_aya[numero][numero];
for (unsigned int i = 0; i <= numero; i++) {
p_a[i] = i;
}
for (unsigned int i = 0; i <= numero; i++) {
for (unsigned int j = 0; j <= numero; j++) {
p_aya[i][j] = (float) (p_a[i] …Run Code Online (Sandbox Code Playgroud)