Questions tagged «c++»

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

6
在调用condition_variable.notify_one()之前是否必须获得锁定?
我对使用有点困惑std::condition_variable。我了解我必须在致电之前创建一个unique_lockon 。我找不到的是在致电或之前是否还应该获得一个唯一的锁。mutexcondition_variable.wait()notify_one()notify_all() cppreference.com上的示例存在冲突。例如,notify_one页面给出了以下示例: #include <iostream> #include <condition_variable> #include <thread> #include <chrono> std::condition_variable cv; std::mutex cv_m; int i = 0; bool done = false; void waits() { std::unique_lock<std::mutex> lk(cv_m); std::cout << "Waiting... \n"; cv.wait(lk, []{return i == 1;}); std::cout << "...finished waiting. i == 1\n"; done = true; } void signals() …

6
使用find方法后如何更新std :: map?
std::map使用该find方法后如何更新键值? 我有一个这样的映射和迭代器声明: map <char, int> m1; map <char, int>::iterator m1_it; typedef pair <char, int> count_pair; 我正在使用地图存储字符出现的次数。 我正在使用Visual C ++ 2010。
90 c++  map  stl  stdmap 


6
为什么要在C ++中的函数中定义结构和类?
我只是错误地在C ++中做了这样的事情,并且它起作用了。我为什么可以这样做? int main(int argc, char** argv) { struct MyStruct { int somevalue; }; MyStruct s; s.somevalue = 5; } 现在,做完这些之后,我想起了很久以前在某个地方读到的有关此技巧的信息,它是一种针对C ++的穷人功能编程工具,但我不记得为什么有效,或者在哪里阅读。 欢迎回答任何一个问题! 注意:尽管在编写问题时我没有得到任何关于此问题的参考,但当前的侧边栏指出了这一点,因此我将其放在此处以供参考,无论哪种方式,问题都不同,但可能有用。

8
如何使用webRTC和基于服务器的对等连接录制网络摄像头和音频
我想记录用户的网络摄像头和音频并将其保存到服务器上的文件中。这些文件随后将可以提供给其他用户。 回放没有问题,但是在录制内容时遇到了问题。 我的理解是.record()尚未编写getUserMedia函数-到目前为止仅对此提出了建议。 我想使用PeerConnectionAPI在服务器上创建对等连接。我知道这有点麻烦,但是我认为应该可以在服务器上创建一个对等方并记录客户端对等方发送的内容。 如果可以的话,那么我应该能够将数据保存为flv或任何其他视频格式。 我的偏好实际上是录制网络摄像头+音频客户端,以便客户端在上载之前不喜欢他们的第一次尝试时重新录制视频。这也将允许网络连接中断。我看过一些代码,可以通过将数据发送到画布来记录网络摄像头中的单个“图像”,这很酷,但是我也需要音频。 这是我到目前为止的客户端代码: <video autoplay></video> <script language="javascript" type="text/javascript"> function onVideoFail(e) { console.log('webcam fail!', e); }; function hasGetUserMedia() { // Note: Opera is unprefixed. return !!(navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia); } if (hasGetUserMedia()) { // Good to go! } else { alert('getUserMedia() is not supported …

4
如何使用宏参数作为字符串文字?
我试图弄清楚如何编写一个宏,该宏将变量名的字符串文字表示形式与变量本身一起传递给函数。 例如,给出以下功能。 void do_something(string name, int val) { cout << name << ": " << val << endl; } 我想写一个宏,这样我就可以做到这一点: int my_val = 5; CALL_DO_SOMETHING(my_val); 哪个会打印出来: my_val: 5 我尝试执行以下操作: #define CALL_DO_SOMETHING(VAR) do_something("VAR", VAR); 但是,您可能会猜到,引号内的VAR不会被替换,而只是作为字符串文字“ VAR”传递。因此,我想知道是否有一种方法可以将宏参数转换为字符串文字本身。


8
如何在CMake中使用CCache?
我想执行以下操作:如果PATH中存在CCache,则使用“ ccache g ++”进行编译,否则使用g ++。我尝试编写一个小的my-cmake脚本,其中包含 CC="ccache gcc" CXX="ccache g++" cmake $* 但它似乎不起作用(运行make仍不使用ccache;我在CMAKE_VERBOSE_MAKEFILE上选中了它)。 更新: 按照此链接,我尝试将脚本更改为 cmake -D CMAKE_CXX_COMPILER="ccache" -D CMAKE_CXX_COMPILER_ARG1="g++" -D CMAKE_C_COMPILER="ccache" -D CMAKE_C_COMPILER_ARG1="gcc" $* 但是cmake可以避免抱怨使用编译器ccache失败(这是可以预期的)。
90 c++  unix  cmake  ccache 

9
为什么设计一种具有独特匿名类型的语言?
作为C ++ lambda表达式的功能,这一直困扰着我:C ++ lambda表达式的类型是唯一且匿名的,我根本无法写下来。即使我创建了两个在语法上完全相同的lambda,也将结果类型定义为不同的。结果是:a)lambda只可以传递到允许编译时传递的模板函数,不可言传的类型与对象一起传递,以及b)lambda仅在通过类型擦除它们之后才有用std::function<>。 好的,但这只是C ++的工作方式,我准备将其编写为该语言的令人讨厌的功能。但是,我只是了解到Rust似乎也做同样的事情:每个Rust函数或lambda都有一个唯一的匿名类型。现在我在想:为什么? 因此,我的问题是:从语言设计者的角度来看,将唯一的匿名类型的概念引入语言的优势是 什么?

2
只与一个成员一起使用联合的目的是什么?
当我阅读seastar源代码时,我注意到有一个称为tx_side只有一个成员的联合结构。这是解决某些问题的技巧吗? 仅供参考,我将tx_side以下结构粘贴: union tx_side { tx_side() {} ~tx_side() {} void init() { new (&a) aa; } struct aa { std::deque<work_item*> pending_fifo; } a; } _tx;
89 c++  c++14  unions 

6
有什么理由不使用全局lambda吗?
我们有一个函数在其内部使用了非捕获的lambda,例如: void foo() { auto bar = [](int a, int b){ return a + b; } // code using bar(x,y) a bunch of times } 现在,lambda实现的功能已在其他地方使用,因此我将把lambda移出foo()全局/命名空间范围。我可以将其保留为lambda,使其成为复制粘贴选项,也可以将其更改为适当的功能: auto bar = [](int a, int b){ return a + b; } // option 1 int bar(int a, int b){ return a + b; …
89 c++  lambda 

8
Python比C ++更快更轻吗?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我一直认为Python的优势在于代码的可读性和开发速度,但是时间和内存使用却不如C ++。 这些统计数据让我非常震惊。 您的经验告诉您关于Python与C ++的时间和内存使用情况?

5
为什么lambda的大小为1个字节?
我正在使用C ++中的一些lambda进行内存存储,但是我对它们的大小有些不解。 这是我的测试代码: #include <iostream> #include <string> int main() { auto f = [](){ return 17; }; std::cout << f() << std::endl; std::cout << &f << std::endl; std::cout << sizeof(f) << std::endl; } 您可以在此处运行它:http : //fiddle.jyt.io/github/b13f682d1237eb69ebdc60728bb52598 输出是: 17 0x7d90ba8f626f 1 这表明我的λ大小为1。 这怎么可能? lambda至少不应该是其实现的指针吗?
89 c++  c++11  lambda  c++14  sizeof 

3
如何在C ++中制作条件typedef
我正在尝试做这样的事情: #include <iostream> #include <random> typedef int Integer; #if sizeof(Integer) <= 4 typedef std::mt19937 Engine; #else typedef std::mt19937_64 Engine; #endif int main() { std::cout << sizeof(Integer) << std::endl; return 0; } 但是我得到这个错误: error: missing binary operator before token "(" 我该如何正确地设置条件typedef?
89 c++  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.