小编Ami*_*nos的帖子

在不同的空格中使用具有相同名称的变量

此代码编译,但我在Visual Studio中有运行时错误:

运行时检查失败#3 - 正在使用变量'x'而未初始化...

int x = 15;
int main()
{
    int x = x;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我不明白这种行为...当我点击继续时错误框中的程序恢复,x有一个损坏的内容(比如-8556328代替15).

为什么这段代码没有问题,并且int数组声明得很好?

const int x = 5;
int main()
{
     int x[x] = {1,2,3,4};
     return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c++ variable-declaration

40
推荐指数
3
解决办法
1704
查看次数

如何轻松检查std :: map和std :: unordered_map是否包含相同的元素

我正在编写Google测试单元测试,我想检查一下的内容unordered_map<std::string, std::string>是否与a相同std::map<std::string, std::string>

我认为std::equal不会起作用,因为元素std::map按照标准排序.订单并不重要.

c++ stl

11
推荐指数
2
解决办法
1810
查看次数

如何实现CString哈希函数以与std :: unordered_map一起使用?

我想宣布:

std::unordered_map<CString, CString> m_mapMyMap;
Run Code Online (Sandbox Code Playgroud)

但是当我构建时,我得到一个错误,告诉我标准C++没有为CString提供哈希函数,而CString有(LPCSTR)运算符.

如何正确实现CString的哈希函数?

c++ hash mfc unordered-map

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

C++中的引用和文字

我知道"文字"(c字符串,int或其他)存储在某处(在一个只读数据部分显然是.rodata)也许这不准确......

我想了解为什么此代码导致运行时错误:

#include <iostream>
using namespace std;

const int& foo()
{
    return 2;
}
const char* bar()
{
    return "Hello !";
}

int main() {

    cout << foo() << endl; // crash

    cout << bar() << endl; // OK

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

foo返回一个文字的const引用(2)为什么会导致崩溃?是存储在foo()堆栈中的整数2?

另请参阅:为什么字符串文字是l值而所有其他文字都是r值?

c++ rvalue

3
推荐指数
1
解决办法
399
查看次数

在对象超出范围后,不会调用析构函数

考虑这个例子:

#include <iostream>
using namespace std;

class MyClass
{
public:
    ~MyClass() { cout << "DTOR OK !" << endl; }
};

int main(void)
{
    MyClass test();
    MyClass* pTest = new MyClass();
    delete pTest;
}
Run Code Online (Sandbox Code Playgroud)

为什么"DTOR OK!" 不打印两次?为什么不调用本地对象"test"的析构函数?

当析构函数是私有的时,我注意到删除pTest只有编译错误; 但不是本地对象?这里发生了什么事 ?

c++

3
推荐指数
1
解决办法
190
查看次数

MFC CString是一个宽字符串

我正在使用CStrings(控制台应用程序)开发一个win32项目,当我想传递一个函数(strtok_s例如)LPSTR一个CString带有方法的指针时,我注意到一些奇怪的东西GetBuffer(),最后一个而不是给我一个LPSTR,它给了我一个LPWSTR(指向一个宽字符串的指针)... CString应该存储8位字符不是吗?

在某些情况下,我不得不使用CStringA例如能够使用该方法,Find()因为CString我的输入字符串必须是宽字符串.但在另一个项目(窗口程序)中,我没有这个问题,我怀疑标题(当我使用afxstr.h时"查找"使用普通字符串,但不能使用afxcoll.h ......)

通常我会这样做,std::string这就是为什么我迷路了.

c++ string mfc

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

与std :: unordered_map或std :: map相比,MFC CMap是否具有良好的性能

不MFC CMap相比有不错的表现std::unordered_map还是std::map,我问这个问题,因为我打算在我公司启动一个项目,并加快我要开始发展与现有的"类似"的项目,但在最后,有MFC CMap(哈希表映射)ans我认为使用std::unordered_map可以增加性能.我没有找到任何与CMap互联网相关的基准或好文章.否则,std::unordered_map我是否必须修改哈希表的大小,CMap以避免冲突和性能问题?

c++ mfc unordered-map hashmap

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

如何正确地将小数sscanf为char

PVS-Studio给了我一个警告:

char c;
sscanf(line, "%d", &c);
Run Code Online (Sandbox Code Playgroud)

我将%d更改为%c,但这会产生一个错误,因为"c"现在包含数字的ASCII值而不是小数,所以我回到"%d".

那么什么是正确的说明符?有另一种解决方案吗?

c

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

是否可以将X的容器声明为X的成员

我有这门课:

#include <unordered_map>

    class MyClass
    {
        // Trie node class
        struct Node
        {
            std::unordered_map<char, Node> m_children;
            // ...

        }; // .....
};
int main()
{
    MyClass m;
}
Run Code Online (Sandbox Code Playgroud)

编译时,我得到了这个错误:

/usr/include/c++/7/bits/stl_pair.h:204:11:错误:'std :: pair <_T1,_T2> :: second'的类型不完整_T2秒; /// @c second是第二个对象的副本^ ~~~~~ AutocompleteModern.cpp:24:12:注意:'struct Autocomplete :: Node'结构节点的前向声明^ ~~~

我知道如果我在散列映射中使用指针作为值,这可能会起作用.但是我想知道是否有可能在不改变哈希映射值的类型的情况下编译上面的代码.还是不可能?

c++

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

在头文件中定义全局 static const std::string 是否正确

在头文件中定义全局 std::string 是否正确,如下所示:

namespace Colors
{
    static const std::string s_blue = "Blue";
}
Run Code Online (Sandbox Code Playgroud)

c++

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

标签 统计

c++ ×9

mfc ×3

c ×2

unordered-map ×2

hash ×1

hashmap ×1

rvalue ×1

stl ×1

string ×1

variable-declaration ×1