小编Ric*_*ian的帖子

std :: list :: clear会使std :: list :: end iterator失效吗?

检查此代码:

#include "stdafx.h"
#include <list>

int _tmain(int argc, _TCHAR* argv[])
{
    std::list<int> mylist;
    mylist.push_back(1);
    std::list<int>::iterator i = mylist.end();
    if( i == mylist.end() )
        printf( "end is end\n" );

    mylist.clear();
    if( i == mylist.end() )
        printf( "never get here because Microsoft seems to "
                "think the iterator is no longer safe.\n" );

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在,根据cplusplus.com,这不应该是一个问题,在发布模式下,我认为这很好,并没有真正引起任何问题,但调试变得不可能,因为这只是保释而不让我继续.有什么指针吗?

c++ stl stdlist visual-studio-2012

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

甚至比SQLite更轻

我一直在寻找一个C++ SQL库实现,它很容易像SQLite一样挂钩,但速度越来越快.我的项目是在游戏开发中,在需要通过ACID测试和想要一些极端性能之间肯定有一个截止点.我愿意放弃SQL字符串样式查询,允许它被代码驱动,但我没有发现任何提供类似SQL的灵活性,同时也更喜欢性能而不是ACID测试.

我不想重新发明轮子,而且我自己实现一个SQL库的想法非常艰巨,即使它只是你可以做的所有调用的简单子集.

我需要的基本命令(选择,修改,删除,插入,与JOIN,和WHERE),而不是数据操作(如排序,最小值,最大值,计数)和不需要数据库是原子的,或甚至执行一致性(我在测试和调试时可以使用真正的SQL服务.

c++ sql database sqlite performance

9
推荐指数
2
解决办法
1529
查看次数

无网点内存管理器?

有人想过如何编写一个完全没有分支的内存管理器(用C++编写)吗?我写了一个池,一个堆栈,一个队列和一个链表(从池中分配),但我想知道编写一个免费的通用内存管理器是多么合理.

这有助于构建一个真正可重用的框架,用于执行可靠的并发,有序CPU和缓存友好的开发.

编辑:无分支我的意思是不进行直接或间接的函数调用,也不使用ifs.我一直在想我可能会实现一些事情,首先将请求的大小更改为零,以便进行错误的调用,但实际上并没有更多的东西.我觉得这不是不可能的,但是这个练习的另一个方面就是在所说的"不友好"的处理器上进行分析,看看是否值得尽可能地努力避免分支.

c++ concurrency containers data-oriented-design

6
推荐指数
1
解决办法
603
查看次数

为什么模板编译速度如此之慢?

大型模板项目的编译速度很慢,STL是其中的主要罪魁祸首,这似乎来自于经验证据.但是,为什么编译速度慢?

我之前通过观察头部包含和组合编译单元来优化构建,但我不明白为什么模板库的编译速度非常慢.

c++ templates code-generation compilation

6
推荐指数
2
解决办法
3592
查看次数

为什么我的显式构造函数会为我的转换运算符造成这种歧义?

我无法弄清楚为什么我的转换运算符正在考虑显式构造函数。

\n
#include <utility>\n\ntemplate <typename T = void>\nstruct First\n{\n    template <typename... Targs>\n    First(Targs&&... args) {}\n};\n\ntemplate <>\nstruct First<void> {};\n\ntemplate <typename T>\nstruct Second\n{\n    template <typename... Targs>\n    Second(Targs&&... args) {}\n};\n\ntemplate <typename... T> class A;\n\ntemplate <typename SecondType>\nclass A<SecondType>\n{\n  public:\n    A(const A&) = default;\n    explicit A(const First<void>& first) {}\n    explicit A(const Second<SecondType>& second) {}\n};\n\ntemplate <typename FirstType, typename SecondType>\nclass A<FirstType, SecondType>\n{\n  public:\n    A(const First<FirstType> & first) {}\n    explicit operator A<SecondType>() const { return A<SecondType>(First<>()); }\n};\n\nint main() {\n    A<int, float> a{First<int>(123)};\n    A<float> b = static_cast<A<float>>(a);\n\n    // test.cpp:41:41: …
Run Code Online (Sandbox Code Playgroud)

c++ explicit-constructor explicit-conversion

6
推荐指数
1
解决办法
403
查看次数

真实世界并发软件中的读写示例

我正在寻找在并发系统中需要对相同值进行读写访问的真实世界示例.

在我看来,存在许多信号量或锁定,因为没有已知的替代方法(对于实现者),但是你知道任何模式似乎需要互斥量吗?

在某种程度上,我要求考虑现实世界中并发软件的标准HARD问题集.

concurrency multithreading semaphore locking

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