假设我有一个std::list<int> lst
和一些std::list<int>::iterator it
迭代列表.并依赖于it
我想要使用的值it + 1
或it - 1
在我的代码中.有没有一些好方法可以做到这一点next()
,prev()
(我在stl文档中找不到这样的东西)?或者我应该复制it
每次并增加(减少)副本?
C++标准8.3.2/4说:
不应引用引用,不引用引用数组,也不引用引用指针.
但我无法理解为什么这个限制被添加到c ++中.在我看来,下面的代码可以很容易地编译和工作?这种限制的真正原因是什么?
int a = 10, b = 20;
int &c[] = {a, b};
Run Code Online (Sandbox Code Playgroud) 是(bool)(i & 1)
和i % 2 == 1
总是相同的地方i
是int
?
注意:总是说我的意思是所有平台(即使字节是16位)和所有C和C++标准.
编辑:
适用于所有C和C++标准bool
.
我有Perl脚本,每隔3秒就会在现有文件中添加一行新内容.此外,还有一个从该文件中读取的C++应用程序.
问题是应用程序在脚本完成并且文件句柄关闭后开始读取文件.为了避免这种情况,我想在每行附加后刷新,但我是Perl的新手,不知道该怎么做.
有没有简单的方法从WinApi HANDLE创建指向管道一端的FILE*?像我们在unix中做的事:fdopen(fd,<mode>);
char * buf = new char[sizeof(T)];
new (buf) T;
T * t = (T *)buf;
//code...
//here I should destruct *t but as it is argument of template and can be
//instantiated via basic types as well (say int) so such code
/*t->~T();*/
//is incorrect (maybe correct? Strange, but it works on VS 2005 for basic types.)
//and this code
/*delete t;*/
//crashes the program.
delete [] buf;
Run Code Online (Sandbox Code Playgroud)
那么破坏的正确方法是t
什么?
PS上面的代码仅用于描述我的问题,并且与我要编写的代码没有真正的关系.所以请不要给出答案(为什么使用展示位置new
代替非展示位置?或类似的东西)
粗略地说,在C++中有运算符+
,标识符(类的名称,变量,函数,...),const文字-
,一些关键字*
,括号[]
,预处理器new
.但是什么是分号?
让我们考虑一个带有重载的一元运算符和(Address-of)的类.随它去class A
template <class C>
class A
{
public:
C * operator &()
{
return &data;
}
//...
private:
C data;
}
Run Code Online (Sandbox Code Playgroud)
现在我想传递一些函数指针A
来填充它data
.我们称之为f
void f(A * auto_containter)
{
//...
}
Run Code Online (Sandbox Code Playgroud)
但很明显为什么代码波纹管不起作用(甚至不会编译).这是因为调用了重载运算符.
A a;
f(&a);
Run Code Online (Sandbox Code Playgroud)
问题如下:
是否有任何语法传递的地址a
来f
?如果不是,那么对我来说,为什么它允许超载一元是非常奇怪的operator &
,因为它使代码更加错误和难以理解.还是有其他一些原因?
我打开了winnt.h头文件,发现有两行:
typedef wchar_t WCHAR;
Run Code Online (Sandbox Code Playgroud)
和
typedef WCHAR TCHAR, *PTCHAR;
Run Code Online (Sandbox Code Playgroud)
但我的一篇帖子中有评论说它们之间存在一些差异.那有什么区别?
我在互联网上发现了以下问题,并想知道我将如何解决它:
问题:没有重新排列的整数分区
输入:非负数的排列S {s 1,... ..,s n }和整数k.
输出:将分区S分成k个或更少的范围,以最小化所有k个或更少范围的总和的最大值,而无需重新排序任何数字.*
请帮忙,看起来像有趣的问题......我实际上花了很多时间,但没有看到任何解决方案..
c++ ×8
c ×2
winapi ×2
algorithm ×1
arrays ×1
destructor ×1
file ×1
flush ×1
io-buffering ×1
iterator ×1
list ×1
new-operator ×1
perl ×1
reference ×1
templates ×1