Questions tagged «c++»

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

8
BLAS如何获得如此出色的性能?
出于好奇,我决定将自己的矩阵乘法函数与BLAS实现进行基准测试……我对结果并不感到惊讶: 自定义实施,1000 x1000矩阵乘法的10个试验: Took: 15.76542 seconds. BLAS实施,10次10​​00x1000矩阵乘法试验: Took: 1.32432 seconds. 这是使用单精度浮点数。 我的实现: template<class ValT> void mmult(const ValT* A, int ADim1, int ADim2, const ValT* B, int BDim1, int BDim2, ValT* C) { if ( ADim2!=BDim1 ) throw std::runtime_error("Error sizes off"); memset((void*)C,0,sizeof(ValT)*ADim1*BDim2); int cc2,cc1,cr1; for ( cc2=0 ; cc2<BDim2 ; ++cc2 …
108 c++  fortran 


4
方法链中的C ++执行顺序
该程序的输出: #include <iostream> class c1 { public: c1& meth1(int* ar) { std::cout << "method 1" << std::endl; *ar = 1; return *this; } void meth2(int ar) { std::cout << "method 2:"<< ar << std::endl; } }; int main() { c1 c; int nu = 0; c.meth1(&nu).meth2(nu); } 是: method 1 …

17
未解析的外部符号__imp__fprintf和__imp ____ iob_func,SDL2
有人可以解释一下 __imp__fprintf 和 __imp____iob_func 未解决的外部手段? 因为在尝试编译时出现以下错误: 1>SDL2main.lib(SDL_windows_main.obj) : error LNK2019: unresolved external symbol __imp__fprintf referenced in function _ShowError 1>SDL2main.lib(SDL_windows_main.obj) : error LNK2019: unresolved external symbol __imp____iob_func referenced in function _ShowError 1>E:\Documents\Visual Studio 2015\Projects\SDL2_Test\Debug\SDL2_Test.exe : fatal error LNK1120: 2 unresolved externals 我已经可以说问题不在于链接错误。我已正确链接了所有内容,但由于某种原因它无法编译。 我正在尝试使用SDL2。 我正在使用Visual Studio 2015作为编译器。 我已在链接器->输入->其他依赖关系中链接到SDL2.lib和SDL2main.lib,并确保VC ++目录正确。

10
如何在C ++中初始化私有静态const映射?
我只需要字典或关联数组string=>即可int。 这种情况下有类型映射C ++。 但是对于所有实例,我只需要一个映射(->静态),并且该映射不能更改(-> const); 我已经在Boost库中找到了这种方式 std::map<int, char> example = boost::assign::map_list_of(1, 'a') (2, 'b') (3, 'c'); 没有这个库,还有其他解决方案吗?我已经尝试过类似的方法,但是地图初始化总是存在一些问题。 class myClass{ private: static map<int,int> create_map() { map<int,int> m; m[1] = 2; m[3] = 4; m[5] = 6; return m; } static map<int,int> myMap = create_map(); };

5
如何正确传递参数?
我是C ++初学者,但不是编程初学者。我正在尝试学习C ++(c ++ 11),但对我来说最重要的事情还不清楚:传递参数。 我考虑了以下简单示例: 一个具有所有成员原始类型的类: CreditCard(std::string number, int expMonth, int expYear,int pin):number(number), expMonth(expMonth), expYear(expYear), pin(pin) 一个具有基本类型+ 1个复杂类型作为成员的类: Account(std::string number, float amount, CreditCard creditCard) : number(number), amount(amount), creditCard(creditCard) 一个具有基本类型+ 1个复杂类型集合的成员的类: Client(std::string firstName, std::string lastName, std::vector<Account> accounts):firstName(firstName), lastName(lastName), accounts(accounts) 创建帐户时,请执行以下操作: CreditCard cc("12345",2,2015,1001); Account acc("asdasd",345, cc); 显然,在这种情况下,信用卡将被复制两次。如果我将该构造函数重写为 Account(std::string number, float amount, …
108 c++  c++11 


6
C / C ++结构与类
在完成我的C ++类后,在我看来这些结构/类实际上是相同的,只是有一些细微的差别。 我以前从未用C编程过;但我确实知道它具有结构。在C语言中是否可以继承其他结构并设置public / private的修饰符? 如果您可以在常规C语言中执行此操作,那么为什么在全世界都需要C ++?是什么让类与结构不同?
108 c++  class  struct 

8
在.cpp文件中定义C ++名称空间方法的正确方法
可能是重复的,但搜索起来并不容易... 给定标题,例如: namespace ns1 { class MyClass { void method(); }; } 我已经method()在.cpp文件中以几种方式看到了定义: 版本1: namespace ns1 { void MyClass::method() { ... } } 版本2: using namespace ns1; void MyClass::method() { ... } 版本3: void ns1::MyClass::method() { ... } 是否有“正确”的方式来做到这一点?这些“错误”之处是否在于所有含义都不相同?

3
为什么快速整数类型比其他整数类型快?
在ISO / IEC 9899:2018(C18)中,在7.20.1.3中进行了规定: 7.20.1.3最快的最小宽度整数类型 1下列每个类型都指定一个整数类型,该类型通常最快(268)以与至少具有指定宽度的所有整数类型一起使用。 2 typedef名称int_fastN_t指定宽度至少为N uint_fastN_t的最快有符号整数类型。typedef名称指定宽度至少为N 的最快无符号整数类型。 3需要以下类型: int_fast8_t,int_fast16_t,int_fast32_t,int_fast64_t, uint_fast8_t,uint_fast16_t,uint_fast32_t,uint_fast64_t 此表单的所有其他类型都是可选的。 268)不能保证指定类型在所有目的上都是最快的;如果实现没有明确的理由选择一种类型而不是另一种类型,它将仅选择一些满足符号性和宽度要求的整数类型。 但是没有说明为什么这些“快速”整数类型更快。 为什么这些快速整数类型比其他整数类型快? 我用C ++标记了这个问题,因为快速整数类型在C ++ 17的头文件中也可用cstdint。不幸的是,在ISO / IEC 14882:2017(C ++ 17)中没有关于其解释的章节; 我在问题正文中以其他方式实施了该部分。 信息:在C中,它们在的头文件中声明stdint.h。
107 c++  c  performance  types  int 


10
如何禁止临时工
对于Foo类,有没有一种方法可以禁止在不给它命名的情况下构造它? 例如: Foo("hi"); 并且仅在给它起一个名字的情况下才允许它,如下所示? Foo my_foo("hi"); 第一个生命周期只是语句,第二个生命周期是封闭块。在我的用例中,Foo正在测量构造函数和析构函数之间的时间。由于我从不引用局部变量,因此我经常忘记放入局部变量,而无意中更改了生命周期。我想得到一个编译时错误。
107 c++ 

4
stringstream到底做什么?
自昨天以来,我一直在尝试学习C ++,并且正在使用以下文档:http : //www.cplusplus.com/files/tutorial.pdf(第32页)。我在文档中找到了代码,然后运行了它。我尝试输入5.5卢比的价格,输入整数作为数量,输出为0。我尝试输入5.5和6,输出正确。 // stringstreams #include <iostream> #include <string> #include <sstream> using namespace std; int main () { string mystr; float price = 0; int quantity = 0; cout << "Enter price: "; getline (cin,mystr); stringstream(mystr) >> price; cout << "Enter quantity: "; getline (cin,mystr); stringstream(mystr) >> quantity; cout …
107 c++  sstream 

10
C ++:应该使用哪个正则表达式库?[关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow 的主题。 5年前关闭。 改善这个问题 我正在研究在基于Linux的系统上运行的商业(非开源)C ++项目。我需要在C ++代码中做一些正则表达式。(我知道:我现在有2个问题。) 问题:经常使用C / C ++进行正则表达式的人推荐我使用哪些库?快速搜索引起了我以下注意: 1)Boost.Regex(我需要阅读Boost软件许可证,但是这个问题与软件许可证无关) 2)C(非C ++)POSIX正则表达式(#include <regex.h>,regcomp,regexec等) 3)http://freshmeat.net/projects/cpp_regex/ (我对此一无所知;似乎是GPL,因此无法在该项目上使用)
107 c++  regex  linux 

4
基准测试(使用BLAS的python与c ++)和(numpy)
我想编写一个程序,该程序广泛使用BLAS和LAPACK线性代数功能。由于性能是一个问题,因此我做了一些基准测试,想知道我采用的方法是否合法。 可以说,我有三个参赛者,并希望通过一个简单的矩阵矩阵乘法来测试他们的表现。参赛者是: Numpy,仅使用的功能dot。 Python,通过共享对象调用BLAS功能。 C ++,通过共享库调用BLAS功能。 情境 我为不同的尺寸实现了矩阵矩阵乘法i。i为5的增量和matricies运行5-500 m1和m2设置了这样的: m1 = numpy.random.rand(i,i).astype(numpy.float32) m2 = numpy.random.rand(i,i).astype(numpy.float32) 1.脾气暴躁 使用的代码如下所示: tNumpy = timeit.Timer("numpy.dot(m1, m2)", "import numpy; from __main__ import m1, m2") rNumpy.append((i, tNumpy.repeat(20, 1))) 2. Python,通过共享库调用BLAS 具有功能 _blaslib = ctypes.cdll.LoadLibrary("libblas.so") def Mul(m1, m2, i, r): no_trans = c_char("n") n = c_int(i) one = …
107 c++  python  numpy  benchmarking  blas 

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.