Questions tagged «c++»

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

3
在Linux中获取主目录
我需要一种在Linux上运行的C ++程序中获取用户主目录的方法。如果相同的代码可以在Unix上运行,那就太好了。我不想使用HOME环境值。 AFAIK,根主目录是/ root。如果我的程序由root用户运行,可以在此目录中创建一些文件/文件夹吗?
69 c++  c  linux 

1
std :: function如何工作
您知道,我们可以将lambda函数包装或存储到std::function: #include <iostream> #include <functional> int main() { std::function<float (float, float)> add = [](float a, float b) // ^^^^^^^^^^^^^^^^^^^^ { return a + b; }; std::cout << add(1, 2) << std::endl; } 我的问题是std::function,您可以看到它是一个模板类,但是它可以接受任何类型的函数签名。 例如float (float, float)以这种形式return_value (first_arg, second_arg)。 std::function它的结构是什么,如何接受像这样的函数签名x(y,z)以及如何使用它?float (float, float)C ++中是否有新的有效表达式?
69 c++  c++11 

8
我应该从使用boost :: shared_ptr切换到std :: shared_ptr吗?
我想在中启用GCC中对C ++ 0x的支持-std=c++0x。在GCC 4.5(以及不久的4.6)中,我并不一定需要任何当前受支持的C ++ 11功能,但是我想开始习惯它们。例如,在一些我使用迭代器的地方,一种auto类型会很有用。 但是同样,我不需要任何当前支持的功能。目的是鼓励我将新标准的功能纳入我的编程“词汇表”中。 从对C ++ 11支持的了解来看,在GCC中启用它,然后例如通过boost::shared_ptr将使用从切换为std::shared_ptr单独使用,而不是两者混合使用,将其包含进来,是一个好主意吗? PS:我知道这个比较不同口味的好问题,shared_ptr但我想在标准定稿之前就使用哪种更高层次的建议提出建议。换句话说,当像GCC这样的编译器说它支持“实验功能”时,是否意味着我很可能在编译期间遇到奇怪的错误,而这将是主要的时间消耗,并且是StackOverflow上的一些神秘问题的来源? 编辑:我std::shared_ptr之所以决定从此退回,因为我不信任它在GCC 4.5中的支持,如本问题中的例子所示。
69 c++  boost  stl  c++11  shared-ptr 

7
C ++中是否不赞成使用“ new”和“ delete”?
我偶然发现了一个涉及大小不同的数组声明的测验。我想到的第一件事是,我需要在new命令中使用动态分配,如下所示: while(T--) { int N; cin >> N; int *array = new int[N]; // Do something with 'array' delete[] array; } 但是,我看到一种解决方案允许以下情况: while(T--) { int N; cin >> N; int array[N]; // Do something with 'array' } 经过一番研究,我了解到g ++允许这样做,但是这让我一直思考,那么在什么情况下有必要使用动态分配?还是编译器将此转换为动态分配? 包括删除功能。但是请注意,这里的问题与内存泄漏无关。

3
多线程程序停留在优化模式下,但在-O0下正常运行
我编写了一个简单的多线程程序,如下所示: static bool finished = false; int func() { size_t i = 0; while (!finished) ++i; return i; } int main() { auto result=std::async(std::launch::async, func); std::this_thread::sleep_for(std::chrono::seconds(1)); finished=true; std::cout<<"result ="<<result.get(); std::cout<<"\nmain thread id="<<std::this_thread::get_id()<<std::endl; } 它通常表现在调试模式下在Visual Studio中或-O0在GC c和后打印出的结果1秒钟。但是它卡住了,在“ 释放”模式或中不打印任何内容-O1 -O2 -O3。

7
为什么不将nullptr称为NULL?
在C ++ 11中,nullptr关键字被添加为类型更安全的空指针常量,因为先前的NULLas常见定义为0。 标准委员会为什么选择不调用新的空指针常量NULL,或者声明不NULL应该将其声明为#defined nullptr?

14
具有低碰撞率和32位整数的快速字符串哈希算法
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 5年前关闭。 改善这个问题 我想快速搜索许多无关的命名事物。“ aardvark”在任何地方都始终是“ aardvark”,因此对字符串进行哈希处理并重新使用整数可以很好地加快比较速度。整个名称集是未知的(并且会随时间变化)。什么是快速字符串哈希算法,它将生成较小的(32或16)位值并且具有较低的冲突率? 我希望看到针对C / C ++的优化实现。
68 c++  algorithm  string  hash 

3
多个值的C ++数组分配
因此,在初始化数组时,可以在一个位置为其分配多个值: int array [] = {1,3,34,5,6} 但是如果数组已经初始化并且我想在一行中完全替换该数组中元素的值怎么办 所以 int array [] = {1,3,34,5,6} array [] = {34,2,4,5,6} 似乎不起作用... 有办法吗?

15
推荐初始化srand的方法?
我需要一种“好的”方式来初始化C ++中的伪随机数生成器。我发现一篇文章指出: 为了生成类似随机数的数字,通常将srand初始化为一些与众不同的值,例如与执行时间相关的值。例如,函数时间(在头文件ctime中声明)返回的值每秒都是不同的,对于大多数随机需求而言,这是足够独特的。 对于我的应用程序而言,Unixtime不够鲜明。有什么更好的初始化方法?如果它是可移植的,则有很多好处,但是代码将主要在Linux主机上运行。 我当时在考虑做一些pid / unixtime数学来获取整数,或者可能从中读取数据/dev/urandom。 谢谢! 编辑 是的,我实际上每秒多次启动我的应用程序,并且遇到了冲突。
68 c++  random  srand 

1
什么是非推论上下文?
我最近偶然发现“为什么模板参数推导在这里不起作用? ”,答案可以总结为“这是一个非推论的上下文”。 具体来说,第一个引用这样的东西,然后重定向到“详细信息”的标准,而第二个引用该标准,至少可以这样说。 有人能像我一样向凡人解释一个非推论的上下文是什么,它何时发生,为什么发生?

6
C ++静态初始化顺序
当我在C ++中使用静态变量时,我常常最终想要初始化一个变量,并将另一个传递给其构造函数。换句话说,我想创建相互依赖的静态实例。 在单个.cpp或.h文件中,这不是问题:实例将按照声明的顺序创建。但是,当您要使用另一个编译单元中的实例初始化静态实例时,似乎无法指定顺序。结果是,取决于天气,可能会构造依赖另一个实例的实例,然后才构造另一个实例。结果是第一个实例未正确初始化。 有谁知道如何确保以正确的顺序创建静态对象?我已经寻找了很长时间的解决方案,尝试了所有解决方案(包括Schwarz Counter解决方案),但是我开始怀疑是否有真正可行的解决方案。 一种可能是使用静态函数成员的技巧: Type& globalObject() { static Type theOneAndOnlyInstance; return theOneAndOnlyInstance; } 确实,这确实有效。遗憾的是,您必须编写globalObject()。MemberFunction()而不是globalObject.MemberFunction(),从而导致客户端代码有些混乱和不雅观。 更新:感谢您的反应。遗憾的是,确实好像我已经回答了我自己的问题。我想我必须学会忍受...


10
不区分大小写的std :: string.find()
我正在使用std::string的find()方法来测试字符串是否是另一个的子字符串。现在,我需要相同内容的不区分大小写的版本。对于字符串比较,我总是可以转向,stricmp()但似乎没有stristr()。 我已经找到了各种答案,并且大多数建议Boost在我的情况下不能选择使用哪个答案。另外,我需要支持std::wstring/ wchar_t。有任何想法吗?

12
C ++中的惰性评估
C ++不像Haskell那样对延迟评估提供本机支持。 我想知道是否有可能以合理的方式在C ++中实现惰性评估。如果是,您将如何做? 编辑:我喜欢康拉德·鲁道夫的答案。 我想知道是否有可能以更通用的方式实现它,例如,通过使用参数化的类lazy,该类实际上对T有效,而matrix_add对矩阵有效。 对T的任何操作都将返回惰性。唯一的问题是将参数和操作代码存储在惰性内部。谁能看到如何改善这一点?


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.