Questions tagged «c++»

C ++是一种通用编程语言。它最初被设计为C的扩展,并且具有类似的语法,但是现在它是一种完全不同的语言。使用此标记可解决有关将要使用C ++编译器编译的代码的问题。对于与特定标准修订版[C ++ 11],[C ++ 14],[C ++ 17]或[C ++ 20]等相关的问题,请使用特定于版本的标记。


3
如何在GoogleTest中运行特定的测试用例
我正在尝试为我的项目编写一个函数/方法,该函数/方法将询问用户要运行哪些所有测试用例?看起来像下面..., Test_Cases_1 |_TestNo1 |_TestNo2....so on Test_Cases_2 |_TestNo1 |_TestNo2....so on .... ....so on Test_Cases_N |_TestNo1 |_TestNo2....so on 因此,现在的挑战是在运行项目时,它应该提示我您想执行哪些所有测试用例?如果我选择Test_Cases_1和Test_Cases_N。然后,它应该执行这两个测试用例,并应从中排除所有其他用例Test_Cases_2 to ....。在结果窗口也是我希望看到的结果Test_Cases_1和Test_Cases_N。 因此,如果我将看到GoogleTest,则有一个称为的方法test_case_to_run_count();但是所有这些test cases都已通过Test_F()方法注册。因此,我做了很多分析,但仍然没有找到任何解决方案。请帮我。

8
在不使用堆栈或递归的情况下解释Morris有序树遍历
有人可以在不使用堆栈或递归的情况下帮助我了解以下Morris有序树遍历算法吗?我试图理解它是如何工作的,但是它只是在逃避我。 1. Initialize current as root 2. While current is not NULL If current does not have left child a. Print current’s data b. Go to the right, i.e., current = current->right Else a. In current's left subtree, make current the right child of the rightmost node b. Go to …

12
为什么在C ++中使用元组并不常见?
为什么似乎没有人在C ++中使用元组,无论是Boost Tuple库还是TR1的标准库?我读了很多C ++代码,很少看到元组的用法,但是我经常看到很多地方元组可以解决许多问题(通常从函数返回多个值)。 元组可以让您做各种很酷的事情,例如: tie(a,b) = make_tuple(b,a); //swap a and b 那肯定比这更好: temp=a; a=b; b=temp; 当然,您始终可以这样做: swap(a,b); 但是,如果要轮换三个值怎么办?您可以使用元组来执行此操作: tie(a,b,c) = make_tuple(b,c,a); 元组还使从函数返回多个变量变得更加容易,这可能比交换值更常见。使用引用返回值当然不是很好。 我没有想到的元组有什么大的缺点吗?如果没有,为什么很少使用它们?他们慢吗?还是仅仅是人们不习惯他们?使用元组是个好主意吗?
124 c++  tuples 


3
1.0是std :: generate_canonical的有效输出吗?
我一直认为随机数在0到1之间,而没有1,即它们是半开区间[0,1)中的数字。cppreference.com上的文件std::generate_canonical证实了这一点。 但是,当我运行以下程序时: #include <iostream> #include <limits> #include <random> int main() { std::mt19937 rng; std::seed_seq sequence{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; rng.seed(sequence); rng.discard(12 * 629143 + 6); float random = std::generate_canonical<float, std::numeric_limits<float>::digits>(rng); if (random == 1.0f) { std::cout << "Bug!\n"; } return 0; } 它给了我以下输出: Bug! 即,它为我提供了一个完美的解决方案1,这会导致我的MC集成出现问题。那是有效的行为还是我这边有错误?这将提供与G …
124 c++  c++11  random 

17
Qt 5.1.1:由于缺少平台插件“ Windows”,应用程序无法启动
编辑: 有些人开始将我的问题标记为重复。当我问这个问题时,请不要忘记存在许多类似的问题(例如,参见下面的列表)。但是,这些答案都不能解决我的问题。经过长时间的搜索,我发现一条注释已被所有指向丢失的lib的用户忽略。现在,几个月后,评论已更改为答案。但是,当我自己回答这个问题时,我打算通过直接提供解决方案来帮助其他人。不应忘记这一点,到目前为止,我的回答对很多人有所帮助。因此,我的问题绝对不是重复的。 顺便说一句:在顶部提供的链接中接受的答案不能解决问题! 是的,我使用了搜索: 无法加载平台插件“ Windows”。可用的平台有:错误 从Visual Studio qwindows.dll错误部署Qt C ++应用程序 无法加载平台插件“ windows”可用平台为:Windows,最小 但是,就我而言,问题仍然存在。我将Qt 5.1.1与Visual Studio 2012一起使用,并在Windows 7上使用Qt Creator 2.8.1开发了我的应用程序。应用程序以“发布”模式编译,如果直接用Qt Creator启动,则可以执行。 但是,从“发布”文件夹开始时,我收到以下消息: 此应用程序无法启动,因为它找不到或加载Qt平台插件“ windows”。可用的平台插件有:最小,离屏,Windows。 文件夹结构如下所示: release + gui.exe + icudt51.dll + icuin51.dll + icuuc51.dll + libGLESv2.dll + Qt5Core.dll + Qt5Gui.dll + Qt5Widgets.dll + platforms 平台是直接从Qt \ Qt5.1.1 \ 5.1.1 \ …

8
我应该从main()返回EXIT_SUCCESS还是0?
这是一个简单的问题,但是我不断看到矛盾的答案:C ++程序的主例程应该返回0还是EXIT_SUCCESS? #include <cstdlib> int main(){return EXIT_SUCCESS;} 要么 int main(){return 0;} 他们是一回事吗?如果EXIT_SUCCESS只使用exit()? 我认为EXIT_SUCCESS这是一个更好的选择,因为其他软件可能希望将零视为失败,但是我还听说,如果返回0,则编译器仍然能够将其更改为其他值。
124 c++  c  return-value  main 

14
C ++中的双重否定
我刚进入一个代码库很大的项目。 我主要处理的是C ++,他们编写的许多代码的布尔逻辑都使用双重取反。 if (!!variable && (!!api.lookup("some-string"))) { do_some_stuff(); } 我知道这些人是聪明的程序员,很明显,他们并不是故意这样做的。 我不是经验丰富的C ++专家,我对他们为什么这样做的唯一猜测是,他们想绝对肯定所评估的值是实际的布尔表示形式。因此,他们将其取反,然后再次取反以使其恢复为实际的布尔值。 这是正确的,还是我缺少了什么?
124 c++  boolean 


6
Lambda回归自我:这合法吗?
考虑这个相当无用的程序: #include <iostream> int main(int argc, char* argv[]) { int a = 5; auto it = [&](auto self) { return [&](auto b) { std::cout << (a + b) << std::endl; return self(self); }; }; it(it)(4)(6)(42)(77)(999); } 基本上,我们试图制作一个返回自身的lambda。 MSVC编译程序,然后运行 gcc编译程序,并进行段错误 clang拒绝该程序并显示一条消息: error: function 'operator()<(lambda at lam.cpp:6:13)>' with deduced return type cannot …

13
翻转布尔值的最简单方法?
我只想根据已存在的布尔值翻转它。如果是真的,请将其设为假。如果它是错误的,请使其正确。 这是我的代码摘录: switch(wParam) { case VK_F11: if (flipVal == true) { flipVal = false; } else { flipVal = true; } break; case VK_F12: if (otherVal == true) { otherValVal = false; } else { otherVal = true; } break; default: break; }
124 c++  c  boolean  boolean-logic 

3
内联变量如何工作?
在2016年Oulu ISO C ++标准会议上,标准委员会将名为Inline Variables的提案投票选入C ++ 17。 用外行的话来说,什么是内联变量,它们如何工作以及它们有什么用?内联变量应如何声明,定义和使用?
124 c++  c++17 

7
C ++,免费存储与堆
new/delete据说动态分配是在免费存储上进行的,而malloc/free操作则使用堆。 在实践中,我想知道是否存在实际差异。 编译器是否区分这两个术语?(免费存储和堆,不是new/malloc)

2
c ++ 11 lambda是否捕获不使用的变量?
当我[=]用来表示我希望通过lambda中的值捕获所有局部变量时,这是否会导致函数中的所有局部变量都被复制,或者仅仅是lambda使用的所有局部变量? 因此,例如,如果我有: vector<int> my_huge_vector(100000); int my_measly_int; some_function([=](int i){ return my_measly_int + i; }); 即使我不在lambda中使用my_huge_vector,它也会被复制吗?
123 c++  lambda  c++11 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.