Questions tagged «c++»

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


3
如何使用图书馆
由于某种原因,我永远无法使用任何语言的外部库。我正在寻找有关如何使用外部库以及它们如何工作的说明/解释。当我在线搜索时,我得到的片段似乎永远不会应用于我下载并尝试使用的任何库。我同时在Mac和PC上工作,C ++示例很好。我将eclipse IDE与C ++插件一起使用。如果有适用于所有库的说明,那将很棒。
77 c++  windows  macos 




3
OpenCV Point(x,y)表示(列,行)或(行,列)
我在Matrix中有一个300x200的图片src。我正在对图像执行以下操作。 for(int i=0;i<src.rows;i++){ for(int j=0;j<src.cols;j++){ line( src, Point(i,j),Point(i,j), Scalar( 255, 0, 0 ), 1,8 ); } } imshow("A",src); waitKey(0); 我期望它能以白色覆盖整个图像,但是图像的下部仍然是空白。如果我这样做 for(int i=0;i<src.rows;i++){ for(int j=0;j<src.cols;j++){ src.at<uchar>(i,j)=255; } } imshow("A",src); waitKey(0); 整个图像以白色覆盖。因此,这意味着src.at<uchar>(i,j)正在使用(i,j)as(row,column)但Point(x,y)正在使用(x,y)as(column,row)
77 c++  opencv 

2
什么是ALL_BUILD和ZERO_CHECK,我需要它们吗?
我创建了一个简单的CMakeLists.txt: cmake_minimum_required(VERSION 2.8) project (HelloWorld) add_executable (HelloWorld main.cpp) 但是,当我从CMake生成VS2012或VS2010项目时,我得到了这两个附加条目-ALL_BUILD和ZERO_CHECK。我不明白他们的目的,我需要他们吗?

1
C ++ 11 auto:如果得到一个常量引用怎么办?
请看下面的简单代码: class Foo { public: Foo(){} ~Foo(){} Foo(const Foo&){} Foo& operator=(const Foo&) { return *this; } }; static Foo g_temp; const Foo& GetFoo() { return g_temp; } 我试图这样使用auto: auto my_foo = GetFoo(); 我希望这my_foo将是对的常量引用Foo,这是函数的返回类型。但是,类型auto为Foo,而不是引用。此外,my_foo通过复制创建g_temp。这种行为对我而言并不那么明显。 为了获得对的引用Foo,我需要这样编写: const auto& my_foo2 = GetFoo(); auto& my_foo3 = GetFoo(); 问题:为什么auto推断出GetFoo作为对象而不是引用的返回类型?
77 c++  reference  c++11  auto 


12
C#真的比说C ++慢吗?
我一直在想这个问题已有一段时间了。 当然,C#中有些事情并未针对速度进行优化,因此使用这些对象或语言调整(如LinQ)可能会导致代码变慢。 但是,如果您不使用这些调整中的任何一项,而只是比较C#和C ++中的相同代码(将一个代码转换为另一个代码很容易)。真的会慢很多吗? 我看到的比较表明,在某些情况下C#可能甚至更快,因为从理论上讲,JIT编译器应实时优化代码并获得更好的结果: 托管还是非托管? 我们应该记住,JIT编译器是实时编译代码的,但这是1倍的开销,同一代码(一旦到达并编译)就不需要在运行时再次编译。 除非您创建并销毁了数千个对象(例如使用String而不是StringBuilder),否则GC也不会增加很多开销。而且在C ++中这样做也很昂贵。 我想提出的另一点是.Net中引入的DLL之间的更好的通信。.Net平台的通信要比基于托管COM的DLL更好。 我看不出为什么语言应该变慢的任何内在原因,而且我真的不认为C#比C ++慢(无论是经验还是缺乏很好的解释)。 那么,用C#编写的相同代码的一部分会比用C ++编写的相同代码慢吗? 如果是这样,那为什么呢? 其他一些参考资料(稍加讨论,但没有解释WHY): 如果C#比C ++慢,为什么还要使用C#?
76 c#  c++  performance 

10
为什么使用!将int转换为bool时?
用这种方式将整数转换为布尔值的原因可能是什么? bool booleanValue = !!integerValue; 而不只是 bool booleanValue = integerValue; 我所知道的是,在VC ++ 7中,后者将导致C4800警告,而前者则不会。两者之间还有其他区别吗?
76 c++  integer  boolean 

3
c ++ integer-> std :: string转换。功能简单吗?
问题:我有一个整数;该整数需要转换为stl :: string类型。 过去,我曾经stringstream做过一次转换,这有点麻烦。我知道C方法是执行sprintf,但是我宁愿使用类型安全的C ++方法。 有一个更好的方法吗? 这是我过去使用过的stringstream方法: std::string intToString(int i) { std::stringstream ss; std::string s; ss << i; s = ss.str(); return s; } 当然,可以这样重写: template<class T> std::string t_to_string(T i) { std::stringstream ss; std::string s; ss << i; s = ss.str(); return s; } 但是,我有一个想法,那就是这是一个“重量级”的实现。 Zan指出,该调用非常不错,但是: std::string s = t_to_string(my_integer); …
76 c++  integer  stdstring 

5
此typedef语句是什么意思?
在C ++参考页中,他们提供了一些typedef示例,而我试图理解它们的含义。 // simple typedef typedef unsigned long mylong; // more complicated typedef typedef int int_t, *intp_t, (&fp)(int, mylong), arr_t[10]; 因此,我理解了简单的typedef(第一个声明)。 但是他们要对第二个声明什么(下面重复)? typedef int int_t, *intp_t, (&fp)(int, ulong), arr_t[10]; 特别是什么(&fp)(int, mylong)意思?
76 c++  typedef 

6
为此得到一个boost :: shared_ptr
我boost:shared_ptr在代码中广泛使用。实际上,分配在堆上的大多数对象都由持有shared_ptr。不幸的是,这意味着我无法传递this带有的任何函数shared_ptr。考虑以下代码: void bar(boost::shared_ptr<Foo> pFoo) { ... } void Foo::someFunction() { bar(this); } 这里有两个问题。首先,由于T *的T *构造函数shared_ptr是显式的,因此不会编译。其次,如果我强迫它与之一起构建,bar(boost::shared_ptr<Foo>(this))我将创建指向我的对象的第二个共享指针,该指针最终将导致两次删除。 这使我想到了一个问题:是否存在任何标准模式来从这些对象之一的方法内部获取您知道的现有共享指针的副本?使用介入式引用是我唯一的选择吗?
76 c++  boost 

5
为什么这个C ++程序如此之快?
我写了一个基准测试来比较Python,Ruby,JavaScript和C ++的不同解释器/编译器的性能。不出所料,事实证明(优化的)C ++胜过脚本语言,但是这样做的原因令人难以置信。 结果是: sven@jet:~/tmp/js$ time node bla.js # * JavaScript with node * 0 real 0m1.222s user 0m1.190s sys 0m0.015s sven@jet:~/tmp/js$ time ruby foo.rb # * Ruby * 0 real 0m52.428s user 0m52.395s sys 0m0.028s sven@jet:~/tmp/js$ time python blub.py # * Python with CPython * 0 real 1m16.480s user …

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.