" Effective C++ "第3项说"尽可能使用const",它给出了一个例子:
const Rational operator*(const Rational& lhs,
const Rational& rhs);
Run Code Online (Sandbox Code Playgroud)
防止客户端犯下这样的暴行:
Rational a, b, c;
...
(a * b) = c; // invoke operator= on the result of a*b!
Run Code Online (Sandbox Code Playgroud)
但是,函数的非参考返回值是否已经是一个rvalue?那么为什么还要这么做呢?
这是事情,我有一个代理控制远程模块的引用,我把这些代理中的一些放在sys.modules
这样我可以像本地模块一样使用它.但是一些其他对象放在__builtin__
远程环境的模块中(就像一个魔术变量,以方便调试或引用).我不想引用这些变量conn.__builtin__.var
,我必须要么替换本地__builtin__
(这似乎不适用于替换sys.modules['__builtin__']
或挂钩全局名称查找规则.如何?对于一个模块,你可以重载一个getattr
来做这个.但是在一个交互式翻译中,如IPython
谁是主要模块或如何做到这一点? 更新:正如@Nizam Mohamed指出的那样,是的,我可以得到__main__
模块,但我仍然无法修改它的名称查找角色.
我想完全将本地环境变为远程环境(用于调试控制台)
UPDATE
现在我只是迭代所有的__builtin__.__dict__
,如果有一个不在本地的名称__builtin__
.我将名称添加到本地__builtin__
.但是,与名称查找规则相比,它不是那么动态,如果我在本地找不到该名称,请__builtin__
尝试远程名称.
这是一个类似的讨论.
而这个问题通过用一个对象替换它来模拟模块sys.modules
.但这对于__builtin__
名称查找不起作用,我也尝试__builtin__.__getattribute__
用自定义的一个替换,首先使用原始查找,然后在失败时使用自定义查找.但是__builtin__
从未调用过__builtin__.__getattribute__
偶数的全局名称查找__builtin__.__getattribute__('name')
返回所需的值,__builtin__.name
或者name
永远不会返回一个.
我绘制了一个景点的访问时间分布,从一天0到23小时.我想调整x轴的间隔,让所有小时都显示出来.我怎样才能做到这一点?
d = c(42,13,10,3,2,6,7,15,38,63,128,153,178,181,236,217,272,417,526,653,607,385,191,70)
plot(seq(0,23,by=1),c,type='b',col='red',main="Confucius Temple",xlab="Hours",ylab="Numbers of check-in")
Run Code Online (Sandbox Code Playgroud)
调试我的设备时,gdb 7.7和7.11都错过了一些共享库(oppo r7s).我把所有图书馆都搬到了当地.这是一个完整的库列表info shared
(gdb) info shared
From To Syms Read Shared Object Library
0x40000980 0x40009640 Yes (*) Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\linker
0x401c7940 0x401ce6e8 Yes (*) Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\libutils.so
No libstdc++.so
No libm.so
0x4013bbb0 0x4017329c Yes (*) Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\libc.so
No libbinder.so
No liblog.so
No libhardware.so
No libcutils.so
No libc++.so
No libLLVM.so
No libbcinfo.so
No libunwind.so
No libz.so
No libpng.so
No libpowermanager.so
No libcommon_time_client.so
No libstlport.so
No libui.so
No libsync.so
No libgui.so
No libft2.so
No libbcc.so
No libGLESv2.so
No libGLESv1_CM.so
No libEGL.so
No libunwind-ptrace.so …
Run Code Online (Sandbox Code Playgroud) 对于包含用户网页访问行为记录的表,如何选择访问多个网页的用户.
这个表的结构是:
userId webpageId visitTime
0 123 ...
0 124 ...
1 123 ...
... ... ...
Run Code Online (Sandbox Code Playgroud)
我可以算一下:
SELECT userId, COUNT(DISTINCT webpageId) AS count FROM visits GROUP BY userId;
Run Code Online (Sandbox Code Playgroud)
它给我的结果如下:
userId count
0 2
1 1
2 6
... ...
Run Code Online (Sandbox Code Playgroud)
如何执行查询,给出最终结果,如:
userId
0
2
...
Run Code Online (Sandbox Code Playgroud)
每个用户都访问多个DISTINCT网页
我想使用fwrite将对象写入顺序文件.班级就像
class A{
int a;
int b;
public:
//interface
}
Run Code Online (Sandbox Code Playgroud)
当我将一个对象写入文件时 我在游荡,我可以fwrite( this, sizeof(int), 2, fo)
用来编写前两个整数.
问题是:即使this
在对象的最开头存在虚拟表,也保证指向对象数据的开始.所以上面的操作是安全的.
我需要将jpg文件读取为字符串.我想将此文件上传到我们的服务器,我只是发现API需要一个字符串作为此图片的数据.我在之前的问题中遵循了这些建议,我已经使用c ++将上传图片问到服务器.
int main() {
ifstream fin("cloud.jpg");
ofstream fout("test.jpg");//for testing purpose, to see if the string is a right copy
ostringstream ostrm;
unsigned char tmp;
int count = 0;
while ( fin >> tmp ) {
++count;//for testing purpose
ostrm << tmp;
}
string data( ostrm.str() );
cout << count << endl;//ouput 60! Definitely not the right size
fout << string;//only 60 bytes
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么它停在60?60岁时这是一个奇怪的角色,我该怎么做才能将jpg读成一个字符串?
UPDATE
几乎在那里,但在使用建议的方法后,当我将字符串重写为输出文件时,它会失真.发现我还应该指定ofstream处于二进制模式ofstream::binary
.完成!
那么ifstream::binary
&之间的区别ios::binary
是什么 …
我一直在阅读"C++入门".对于对象的初始化,C++支持两种形式的初始化:直接和复制.但本书并未参考初始化参考.在书中我从未见过直接初始化(如果存在)引用.一切都像副本一样:
int i;
int &j = i;//but not int &j(i);which also works in my experiment
Run Code Online (Sandbox Code Playgroud)
我想知道它是在下面进行的初始化参考.对于以下代码:
string null_book = "9-999-99999-9";
Run Code Online (Sandbox Code Playgroud)
初始化进程首先创建一个临时string对象TMP(例如),将直接与AC风格字符串参数初始化,然后初始化变量null_book与拷贝构造函数.这对我来说很有意义.对于这一个:
int &j = i;
Run Code Online (Sandbox Code Playgroud)
ref ref会以同样的方式初始化吗?那将是一个临时引用它&t(例如)由i初始化然后用t初始化j?这没有意义??? 为什么书从不使用直接初始化作为参考?感谢您的关注!
虽然标题是一个问题,但简短的答案显然是否定的.我试过shell.真正的问题是为什么?ps:string是一些非ascii字符,如中文,XXX是当前的字符串编码
>>> u'??' == '??'.decode('gbk')
False
//The first one is u'\xd6\xd0\xce\xc4' while the second one u'\u4e2d\u6587'
Run Code Online (Sandbox Code Playgroud)
上面的例子如上.我正在使用windows简体中文.默认编码是gbk,python shell也是.我得到了两个unicode对象不相等.
更新
a = '??'.decode('gbk')
>>> a
u'\u4e2d\u6587'
>>> print a
??
>>> b = u'??'
>>> print b
ÖÐÎÄ
Run Code Online (Sandbox Code Playgroud) 虽然这个问题似乎有点令人困惑。代码很简单:
template <typename T>
void tfunc(T&& getter)
{
}
template <typename T = void>
void voidfunc()
{}
int main() {
tfunc(&voidfunc); // error: could not deduce template argument for 'T'
tfunc(&voidfunc<int>); // ok
voidfunc(); // calling using default template parameter is ok.
}
Run Code Online (Sandbox Code Playgroud)
clang 11 和 msvc Visual Studio 2019 16.7 都抱怨错误。为什么我需要明确指定模板参数。
voidfunc
到使用它的地方的实例化。类型并不重要。&voidfunc
由 clangAST 生成的一些代码使用,否则我需要调整生成器来编写&voidfuc<>
它是否是模板。__declspec(property(put=voidfunc))
然而,这个 clang/msvc 扩展需要voidfunc
但不是voidfunc<>
&voidfunc<>
如果给定的函数是模板,我已经调整了生成器以输出@Jarod42 所说的。它现在有效。