我想生成介于0到10 ^ 12之间的10000个整数随机数.通常,代码看起来像这样:
x <- sample(0:1000000000000,10000,replace=T)
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误消息:
Error in 0:1000000000000 : result would be too long a vector
Run Code Online (Sandbox Code Playgroud)
是否有一个更有效的内存方法,不必将10 ^ 12个整数放在一个向量中,只是为了获得大小为10000的样本?如果没有,有没有办法增加向量的最大大小?我正在使用具有12GB可用RAM的64位操作系统.
所以我有一个包含字符串字段的类:
public class A {
private String type = ...
public String getType(){
return this.type;
}
public void setType(String type){
this.type = type;
}
}
Run Code Online (Sandbox Code Playgroud)
我还列出了所有可能的类型,将来有十二种甚至更多.
现在我想编写一个获取类A对象的方法,并根据类中的"类型"调用特定方法.有没有比编写12个(或更多)if语句更聪明的解决方案?
通常我会使用访问者模式,但我不想创建十二个新类.
编辑:
我最终创建了一个
Map<String,Function<A,String>> map = new HashMap<String,Function<A,String>>
Run Code Online (Sandbox Code Playgroud)
然后打电话
A a;
...
map.get(a.getType).apply(a);
Run Code Online (Sandbox Code Playgroud) 我正在用C++编写一个类,它需要一些可以在整个类中访问的常量.通常我会使用#define,一个常量或静态声明但是有一些奇怪的事情发生:所以我举例说
#define Rm 8.3144621
但 std::cout << Rm << std::endl;
打印8.31446.
我也试过了
#define Rm 831.44621e-2
Run Code Online (Sandbox Code Playgroud)
和 const double Rm = 8.3144621
和 static double Rm = 8.3144621
以及每种可能的方法来初始化或强制转换为双常数.
有没有解决方案或我必须使用字段?
因此,遍历字符串并使用operator[]或插入更改字符可能会使迭代器无效.
像这样的迭代也是如此吗?
std::string str = "ABCD";
for(auto&& c : str){
for(int i = 0; i < 3; ++i){
switch(c) {
case 'A':
c = 'B';
break;
case 'B':
c = 'C';
break;
/*...*/
}
//do something
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码适用于gcc和msvc,但我不知道我是否可以信任它.我正在使用C++ 14.