传递shared_ptr的最佳做法是什么?
目前我传递shared_ptr函数参数,如下所示:
void function1( shared_ptr<TYPE>& value );
Run Code Online (Sandbox Code Playgroud) 如何检查两个对象(例如数据帧)在R中的值是否相等?
值相等,我的意思是一个数据帧的每列的每一行的值等于第二个数据帧中相应的行和列的值.
我试图基于此表将两个ggplot2图合并为一个:
Type RatingA RatingB
1 One 3 36
2 Two 5 53
3 One 5 57
4 One 7 74
5 Three 4 38
6 Three 8 83
Run Code Online (Sandbox Code Playgroud)
我想制作两个散点图,其中y轴的等级平均值,x轴上的类型.
这是我创建每个图形的方式:
p1 <- ggplot(test, aes(x=reorder(Type, RatingA, mean), y=RatingA)) +
stat_summary(fun.y="mean", geom="point")
p2 <- ggplot(test, aes(x=reorder(Type, RatingB, mean), y=RatingB)) +
stat_summary(fun.y="mean", geom="point")
Run Code Online (Sandbox Code Playgroud)
由于p1和p2具有相同的x轴,我希望它们可以垂直排序.我看着facet_align,但我找不到能做到这一点的东西.
A类使用初始化列表将成员设置为参数值,而B类使用构造函数体内的赋值.
只要我保持一致,任何人都可以给出任何理由而不喜欢一个吗?
class A
{
String _filename;
A(String filename) : _filename(filename)
{
}
}
Run Code Online (Sandbox Code Playgroud)
class B
{
String _filename;
B(String filename)
{
_filename = filename;
}
}
Run Code Online (Sandbox Code Playgroud) df <- structure(list(ID = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L,
2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 5L,
5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L), .Label = c("1",
"2", "3", "4", "5", "6", "7"), class = "factor"), TYPE = structure(c(1L,
2L, 3L, 4L, 5L, 1L, 2L, 3L, 4L, 5L, 6L, 1L, 2L, 3L, 4L, 5L, 6L,
1L, 2L, 3L, 4L, 5L, 6L, 1L, …Run Code Online (Sandbox Code Playgroud) // MyClass.h
namespace MyNamespace {
static const double GasConstant = 1.987;
class MyClass
{
// constructors, methods, etc.
};
}
Run Code Online (Sandbox Code Playgroud)
我以前在MyClass声明中声明了GasConstant(并且在源文件中有一个单独的定义,因为C++不支持const非整数类型的初始化).然而,我需要从其他文件访问它,从逻辑上看,它似乎应该驻留在命名空间级别.
我的问题是,static const在这种情况下会产生什么影响?显然const意味着我无法为GasConstant分配新值,但命名空间中的静态成员意味着什么.这类似于文件范围内的静态,其中成员在单元外是不可访问的吗?
我正在使用蓝牙聊天来连接和接收来自蓝牙设备的数据.
我使用以下代码来读取数据:
public void run() {
byte[] buffer = new byte[1024];
int bytes;
Log.v("MR", "start listening....");
// Keep listening to the InputStream while connected
while (true) {
try {
// Read from the InputStream
Log.d("MR", "buffer in try");
bytes = mmInStream.read(buffer);
Log.d("MR", "input stream :"+(new String(buffer)));
// Send the obtained bytes to the UI Activity
mHandler.obtainMessage(Conn.MESSAGE_READ, bytes, -1, buffer).sendToTarget();
Log.d("MR", "buffer after");
} catch (Exception e) {
Log.e("MR", "Error :"+e.getMessage());
//
connectionLost();
// break;
}
Log.d("MR", "buffer after while");
} …Run Code Online (Sandbox Code Playgroud) 嗨,我想更改大块选项,中间块,而不必创建一个新的块..
运行以下代码我希望得到两个非常不同的大小输出,但由于某种原因,似乎并非如此.
第二个情节根本没有绘图...(当你把它改为绘图时(2:1000)......但无论哪种方式,第二个输出都与第一个相同.两者fig.width=7.我在做什么错误?
请注意'mid chunk'的重要性,原因是我想在运行函数时多次更改块选项以获得不同大小的不同输出.
```{r}
sessionInfo()
opts_chunk$set(fig.width=3)
plot(1:1000)
opts_chunk$set(fig.width=10)
plot(1:1000)
```
Run Code Online (Sandbox Code Playgroud)
sessionInfo输出如下:
## R version 2.15.1 (2012-06-22)
## Platform: i386-pc-mingw32/i386 (32-bit)
##
## locale:
## [1] LC_COLLATE=English_United Kingdom.1252
## [2] LC_CTYPE=English_United Kingdom.1252
## [3] LC_MONETARY=English_United Kingdom.1252
## [4] LC_NUMERIC=C
## [5] LC_TIME=English_United Kingdom.1252
##
## attached base packages:
## [1] stats graphics grDevices datasets utils methods base
##
## other attached packages:
## [1] knitr_0.7
##
## loaded via a namespace (and not attached):
## [1] digest_0.5.2 …Run Code Online (Sandbox Code Playgroud) 这个问题的动机是进一步探索这个问题.当每个小平面的条数存在较大差异时,接受的解决方案的问题变得更加明显.使用该解决方案查看此数据和结果图:
# create slightly contrived data to better highlight width problems
data <- data.frame(ID=factor(c(rep(1,9), rep(2,6), rep(3,6), rep(4,3), rep(5,3))),
TYPE=factor(rep(1:3,length(ID)/3)),
TIME=factor(c(1,1,1,2,2,2,3,3,3,1,1,1,2,2,2,1,1,1,2,2,2,1,1,1,1,1,1)),
VAL=runif(27))
# implement previously suggested solution
base.width <- 0.9
data$w <- base.width
# facet two has 3 bars compared to facet one's 5 bars
data$w[data$TIME==2] <- base.width * 3/5
# facet 3 has 1 bar compared to facet one's 5 bars
data$w[data$TIME==3] <- base.width * 1/5
ggplot(data, aes(x=ID, y=VAL, fill=TYPE)) +
facet_wrap(~TIME, ncol=1, scale="free") +
geom_bar(position="stack", aes(width = …Run Code Online (Sandbox Code Playgroud) 在编译引用混合的c ++托管/非托管代码的Visual Studio 2005项目时,我收到以下错误:
1> LINK:致命错误LNK1104:无法打开文件'libboost_date_time-vc80-mt-1_42.lib'
我遵循了入门指南.相关的是这个片段:
"Boost.DateTime有一个二进制组件,只有在你使用它的to_string/from_string或序列化功能时才需要,或者如果你的目标是Visual C++ 6.x或Borland."
我已经对"to_string"和"from_string"进行了全局搜索.这些DateTime方法的代码中没有出现.
在DateTime库本身的文档中,有以下代码段:
"该库有一些函数需要创建一个库文件(主要是to_string,from_string函数).大多数库用户可以有效地使用库而不构建库,但只需包含所需的头文件.如果需要库,build目录中的Jamfile将生成一个"静态"库(libboost_date_time)和一个包含这些函数的"动态/共享"库(boost_date_time)."
我如何解决这个问题?简单的解决方案是构建库或使用来自BoostPro的Windows二进制安装程序,但是根据文档我不需要编译库,这使我感到困扰.
另一个问题是DateTime文档似乎表明它的"主要是to_string,from_string",我的代码可能会引用一些需要创建库文件的其他函数吗?有谁知道其他功能包括在内?是否有自己环绕的函数或调用to_string或from_string?
我使用的唯一包含是:
#include <boost/date_time/gregorian/gregorian.hpp>
Run Code Online (Sandbox Code Playgroud)