我用以下代码阅读了Stroustrup的这个链接:
class X {
int a;
public:
X(int x) { if (0<x && x<=max) a=x; else throw bad_X(x); }
X() :X{42} { }
X(string s) :X{lexical_cast<int>(s)} { }
// ...
};
Run Code Online (Sandbox Code Playgroud)
我的问题是关于这条线:
X() X{42}{}
括号和大括号之间有什么区别吗?
如果没有差异,我可以在其他函数调用中使用大括号吗?或者只是在构造函数委托中?最后为什么我们应该有这两种语法?这有点暧昧.
这段代码是什么:`+`(1, `*`(2, 3))应该在R中做什么?可以用更典型的方式编码吗?怎么样?
我一直在试图用C在Keil写我的一些测试代码TM4C123G,它使用的ARM微控制器.我不知道ARM assembly,但我已经为AVR microcontroller过去编写了一些汇编代码.
存储变量的值在哪里,如果我们在C中声明一个变量global,而不是声明它main?
关于是否应该声明一个变量global而不是main(在为微控制器编写C时)是否有一般指导原则?
如果我使用wait(null),并且我知道(肯定)子wait(null)进程会在我们到达父进程之前完成(退出),那么父进程是否会wait(null)阻塞?我的意思是,wait()不会得到任何信号吧?
int main() {
int pipe_descs[2] ;
int i, n, p ;
srand(time(NULL( ;
pipe(pipe_descs) ;
for (i = 0; i < 2; i++) {
pid_t status = fork() ;
if (status == 0) {
n = rand() % 100;
p = (int) getpid() ;
write(pipe_descs[1], &n, sizeof(int)) ;
write(pipe_descs[1], &p, sizeof(int)) ;
exit(0) ;
}
else {
read(pipe_descs[0], &n, sizeof(int)) ;
read(pipe_descs[0], &p, sizeof(int)) ;
printf(" %d %d\n", n, p) ; …Run Code Online (Sandbox Code Playgroud) 我有一个从 CSV 文件导入的数据集,其中“年份”列从 2001 年开始一直到 2013 年。
然而,列类是“整数”。
> class(Year)
[1] "integer"
Run Code Online (Sandbox Code Playgroud)
我已经查看了有关如何进行此更改的各种解决方案和帖子,但解决方案似乎适用于某些版本的//YYYY-mm-dd或转换类似的内容dd-mm-yyymm-dd-yyyy20150521为日期。
这些是我迄今为止尝试过的一些命令,但没有成功。
Year <- as.Date(Year, "%Y")
Error in charToDate(x) :
character string is not in a standard unambiguous format
as.Date(Year)
Error in as.Date.numeric(Year) : 'origin' must be supplied
as.Date(Year, Year[1])
Error in as.Date.numeric(origin, ...) : 'origin' must be supplied
as.Date(Year, "2001")
Error in charToDate(x) :
character string is not in a standard unambiguous format
as.Date(Year, 2001)
Error in as.Date.numeric(origin, ...) : 'origin' …Run Code Online (Sandbox Code Playgroud) 我有一个data.table的等位基因身份(行是个体,列是基因座),由一个单独的列分组.我想按组计算每个基因座的等位基因频率(比例).示例数据表:
DT = data.table(Loc1=rep(c("G","T"),each=5),
Loc2=c("C","A"), Loc3=c("C","G","G","G",
"C","G","G","G","G","G"),
Group=c(rep("G1",3),rep("G2",4),rep("G3",3)))
for(i in 1:3)
set(DT, sample(10,2), i, NA)
> DT
Loc1 Loc2 Loc3 Group
1: G NA C G1
2: G A G G1
3: G C G G1
4: NA NA NA G2
5: G C NA G2
6: T A G G2
7: T C G G2
8: T A G G3
9: T C G G3
10: NA A G G3
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我尝试按组进行计算时,只有组中存在的等位基因ID被识别,所以我很难找到可以告诉我例如所有3组中基因座1的G的比例的代码.举个简单的例子,计算每个基因座上第一个等位基因的总和(不是比例):
> fun1<- function(x){sum(na.omit(x==unique(na.omit(x))[1]))}
> DT[,lapply(.SD,fun1),by=Group,.SDcols=1:3]
Group Loc1 Loc2 …Run Code Online (Sandbox Code Playgroud) 当我试图在MATLAB中将两组点绘制成图表时,我遇到了一些问题.我创建了两个矩阵,分别代表组,一组圆圈和另一组十字架.结果应如下图所示:
circles = [1 1; 2 1; 2 2; 2 3; 2 4; 3 2; 3 3; 4 1; 4 2; 4 3];
crosses = [1 2; 1 3; 1 4; 2 5; 3 4; 3 5; 4 4; 5 1; 5 2; 5 3];
plot(circles, 'ro');
hold on
plot(crosses, 'b+');
hold off;
axis([0,6,0,6]);
Run Code Online (Sandbox Code Playgroud)
但是这段代码绘制了一张凌乱的图表,类似于下图:
情节可能有什么问题?
我试图在MATLAB中使用单个for循环实现BlockLMS.为此,给定一个向量u,我试图创建一个表格的表格
U = [u(k) u(k+1) u(k+2) ... u(k+n)
u(k-1) u(k) ... ... u(k+n-1)
... ... ... ... ...
u(k-n) u(k-n+1) ... ... u(k)]
Run Code Online (Sandbox Code Playgroud)
其中n是常数,k是随每个for循环而变化的变量,假设k > n始终如此.到目前为止我所取得的成就是:
index = meshgrid(0:-1:1-n)' + meshgrid(1:n);
for i = 2:q
% calculate k
U = u(k + index);
% rest of code goes here
end
Run Code Online (Sandbox Code Playgroud)
尽管它有效,但遗憾的是很慢,并不适合我的需要.有没有更有效的方法来实现这一结果?
使用R,计算x和y是整数∈[1,1000],存在多少个唯一幂,x ^ y.这就是我现在所拥有的,只是不知道如何消除重复的数字,
x<-1:1000
y<-1:1000
for (i in x)
{
for (j in y){
print(i^j)
}
}
Run Code Online (Sandbox Code Playgroud) FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET已弃用; 那我该怎么用?
private Intent createShareForecastIntent() {
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_TEXT, mforecastStr + FORECAST_SHARE_HASHTAG);
return shareIntent;
}
Run Code Online (Sandbox Code Playgroud) 例如,假设有一个函数迭代大小为 m 的数组两次和大小为 n 的数组迭代一次
func(){
for(i = 0; i < m; i++){//do something}
for(i = 0; i < n; i++){//do something}
for(i = 0; i < m; i++){//do something}
}
Run Code Online (Sandbox Code Playgroud)
因为 O(2m) = O(m),所以将其时间复杂度写为 O(2m+n) = O(m+n) 是否正确?
对于另一个问题,如果我有一个迭代大小为 n, k 次的数组的函数,其中 k 是在调用该函数之前根据输入计算的。
func(int k){
for(int i = 0; i < k; i++){
for(int j = 0; j < n; j++){}
}
}
Run Code Online (Sandbox Code Playgroud)
和第一个问题一样,可以说它的时间复杂度是 O(k*n) = O(n) 吗?
所以我已经搜索了一下这个问题的答案,这可能非常简单,但我还没有找到任何东西,所以这里有一个问题:像这样的代码在这里工作得很好:
int main(void){
double x;
x=ceil(5.5);
}
Run Code Online (Sandbox Code Playgroud)
但如果我试试这个:
int main(void){
double x = 5.5;
x=ceil(x);
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息:
test.c :(.text + 0x24):未定义的引用`ceil'
为什么这个以及如何将变量发送到'ceil()'函数然后将其存储在另一个变量中?
r ×5
c ×3
c++ ×2
matlab ×2
performance ×2
android ×1
arm ×1
c++11 ×1
constructor ×1
data.table ×1
date ×1
delegation ×1
fork ×1
global ×1
keil ×1
lubridate ×1
wait ×1