小编Jes*_*son的帖子

ASCII图值得我的时间吗?

源代码中的ASCII图是否值得他们创建时间?

我可以更快地创建位图图,但是在源文件中排列图像要困难得多(直到VS2010).

为了记录,我不是在谈论装饰性的ASCII艺术.

这是我最近为我的代码创建的图表的示例,我可能在MS Paint的一半时间内构建了该图表.

          Scenario A:

                          v
 (U)____________(N)_______<--(P)                   Legend:
          '     /             |                    J = ...
          '    /              |                    P = ...
          '   /d              |                    U = ...
          '  /                |                    v = ...
          ' /                 |                    d = ...
          '/                  |                    N = ...
         (J)                  |
          |                   |
          |___________________|
Run Code Online (Sandbox Code Playgroud)

language-agnostic diagram ascii

18
推荐指数
4
解决办法
3649
查看次数

ostringstream的字符串构造函数的目的是什么?

在MSVC 2005上,我有以下代码.

std::ostringstream stream("initial string ");
stream << 5;
std::cout << stream.str();
Run Code Online (Sandbox Code Playgroud)

我的期望是:

initial string 5
Run Code Online (Sandbox Code Playgroud)

我得到的是:

5nitial string
Run Code Online (Sandbox Code Playgroud)

使用字符串初始化流,我希望流将其位置移动到初始字符串的末尾.显然,STL不同意我的观点(不是第一次).

这种行为的目的是什么?这个用例对任何事情都有用吗?还有,有办法将流位置推进到初始字符串的末尾吗?

c++ ostringstream

14
推荐指数
2
解决办法
3201
查看次数

使用decltype将其强制转换为const

我试图解决一个decltype会大大简化问题的问题,但是我遇到了一个使用decltypeon *this并添加const限定符的问题.下面的示例代码演示了该问题.

#include <iostream>

struct Foo
{
  void bar()
  {
    static_cast<const decltype(*this)&>(*this).bar();
  }

  void bar() const
  {
    std::cout << "bar" << std::endl;
  }
};

int main(int argc, char* argv[])
{
  Foo f;
  f.bar(); // calls non-const method
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

代码在MSVC2010中编译,但执行会递归,直到发生堆栈溢出.

Ideone报告编译器错误

prog.cpp: In member function 'void Foo::bar()':
prog.cpp:7:38: error: 'const' qualifiers cannot be applied to 'Foo&'
Run Code Online (Sandbox Code Playgroud)

如果我换行

static_cast<const decltype(*this)&>(*this).bar();
Run Code Online (Sandbox Code Playgroud)

至

static_cast<const Foo&>(*this).bar();
Run Code Online (Sandbox Code Playgroud)

它按预期工作.

我是否滥用或误解了decltype?

c++ const decltype c++11

11
推荐指数
1
解决办法
1822
查看次数

非轴对齐矩形交叉点

我正在尝试找到一种算法来计算2个矩形之间的交集,这些矩形不一定是轴对齐的,并返回结果的交集.

此问题描述了查找交叉点是否存在.如果它存在,我想得到交叉点的结果形状.

我对该算法的应用将使用一个轴对齐的矩形和一个不一定是轴对齐的矩形,但一般算法将是更可取的.

谢谢!

algorithm math graphics geometry

6
推荐指数
0
解决办法
4039
查看次数

重新分配参考

假设我有一堂课

class Foo
{
  public:
    ~Foo() { delete &_bar; }
    void SetBar(const Bar& bar)
    {
      _bar = bar;
    }
    const Bar& GetBar() { return _bar; }
  private:
    Bar& _bar;
}
Run Code Online (Sandbox Code Playgroud)

我对这个类的用法如下(假设Bar有一个工作副本构造函数)

Foo f;
f.SetBar(*(new Bar));
const Bar* bar = &(f.GetBar());
f.SetBar(*(new Bar(bar)));
delete bar;
Run Code Online (Sandbox Code Playgroud)

我有一个类似于这种情况(代码我没写)和当我在"删除栏"上设置的断点调试时 我看到了

&f._bar == bar
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么&f._bar和bar指向相同的内存块,如果我省略"删除栏",从内存管理的角度来看,有什么后果?

非常感谢!

c++ memory-leaks reference

5
推荐指数
1
解决办法
3173
查看次数

在Qt中寻找PostMessage功能

Win32 API有一个PostMessage函数,它将消息发布到GUI消息队列的末尾,以便稍后从GUI线程处理,而不是SendMessage发送和处理与调用线程同步的消息.

有PostMessage功能的Qt解决方案吗?同事建议Qt的服务器/套接字实现可以提供它; 这是一个合理的方法吗?

c++ qt multithreading

5
推荐指数
3
解决办法
3817
查看次数

我可以在STL容器中使用MFC对象吗?

在MSVC2005中,以下代码无法为我编译:

std::vector<CMenu> vec(10);
Run Code Online (Sandbox Code Playgroud)

CMenu是一个MFC菜单对象(如上下文菜单).通过一些测试,我了解到CMenu没有公共拷贝构造函数.

为了做我想做的事,我需要使用动态数组.

CMenu* menus = new CMenu[10];
// ...
delete [] menus;
Run Code Online (Sandbox Code Playgroud)

当然,现在我已经失去了使用STL容器的所有好处.

我还有其他选择吗?

c++ mfc memory-management

2
推荐指数
1
解决办法
384
查看次数