我使用CLion作为IDE,它在IDE中报告错误
必须初始化字段z
它可以编译和运行.但是,如果我更改const int z{3};为const int z=3;,则IDE中不会报告任何错误.我的问题是它是否确实是我的代码错误或它只是IDE中的错误?这两种初始化方法有何不同?您的IDE是否报告此错误?
#include <iostream>
using namespace std;
class Test
{
private:
const int x = 3;
int y;
const int z{3};
public:
Test(int);
int gety(){
return y;
}
};
Test::Test(int a){
y=x+4;
}
int main()
{
Test test(5);
std::cout << test.gety() << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud) 无论如何,我可以为每个类实例生成带有自己种子的随机数。为了清楚地说明这一点,以下是最少的代码。成功的结果将使前 10 位数字等于后 10 位数字。
import sys
import numpy as np
class DataGen:
def __init__(self, seed):
np.random.seed(seed)
def generate(self):
return np.random.uniform(0, 1, size=10)
a=DataGen(1)
print(a.generate())
print("another 10")
print(a.generate())
b=DataGen(1)
print("another 10")
print(a.generate()) #generate random numbers use a.
print("another 10")
print(b.generate()) #first time to use b.
Run Code Online (Sandbox Code Playgroud) 为了说明我的问题,这里是一个最小的代码。
x = [1,2,3]
y = ['a','b','c']
m = zip(x,y)
print(set(m))
print(set(m))
Run Code Online (Sandbox Code Playgroud)
我希望第二个print(set(m))会产生与第一个相同的结果print(set(m)),但这是我们得到的......
{(1, 'a'), (2, 'b'), (3, 'c')}
set()
Run Code Online (Sandbox Code Playgroud)
如果我们替换setto list,结果是一样的。关于为什么会发生这种情况的任何建议?
似乎在Eigen包中,系数在随机矩阵初始化后不断变化。下面列出了一些插图代码和输出。我们期望X.transpose()是第一个X的转置。但这是另一个随机矩阵的转置!
随机矩阵初始化后如何固定这些值?
#include <iostream>
#include <Eigen/Dense>
using namespace Eigen;
using namespace std;
int main(){
auto X = MatrixXi::Random(2,2);
cout << X << endl;
cout << "---------" << endl;
cout << X.transpose() << endl;
cout << "---------" << endl;
cout << X << endl;
cout << "---------" << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
-1073725017 548908249
-791266575 -88798166
---------
70367106 -603530552
-972714280 384109054
---------
385036099 -250177384
933495885 41696341
---------
Run Code Online (Sandbox Code Playgroud)