首页 文章
  • -1 votes
     answers
     views

    pthread_cancel与std :: condition_variable等待?

    我有许多使用 std::condition_variable 的 wait 函数运行事件队列的pthread . 我希望能够将 pthread_cancel 发送到这些工作线程,然后成功 pthread_join . 但是,我注意到 pthread_join 挂起,整个程序陷入僵局 . 有办法做我想做的事吗? 下面是我的一个工作线程循环的示例(此函数作为 pthread_create 的参数给出...
  • 8 votes
     answers
     views

    'sqrt'不是'std'的成员

    我在linux中编译我的程序 - 它有以下几行: std::sqrt((double)num); 在Windows上没关系,但在Linux上我得到'sqrt'不是'std'的成员我有一个包含math.h 有什么问题吗?
  • 3 votes
     answers
     views

    使用std :: optional将std :: vector <int>传递给函数

    我不清楚是否通过引用将一个可选的int向量传递给函数的正确代码是: void test_func(std::optional&lt;std::vector&lt;int&gt;&amp;&gt; vec) 要么 void test_func(std::optional&lt;std::vector&lt;int&gt;&gt;&amp; vec) 任何帮助非常感谢 .
  • 2185 votes
     answers
     views

    为什么“使用命名空间std”被认为是不好的做法?

    其他人告诉我,在代码中编写 using namespace std 是错误的,我应该直接使用 std::cout 和 std::cin . 为什么 using namespace std 被认为是一种不好的做法?是否效率低或者是否存在声明模糊变量(与 std 命名空间中的函数具有相同名称的变量)的风险?它会影响性能吗?
  • 533 votes
     answers
     views

    如何确定某个项目是否存在于std :: vector中?

    我想要做的就是检查一个元素是否存在于向量中,所以我可以处理每个案例 . if ( item_present ) do_this(); else do_that();
  • -2 votes
     answers
     views

    总是“使用命名空间std”? [重复]

    这个问题在这里已有答案: Why is “using namespace std” considered bad practice? 35个答案 我能理解为什么我们应该在代码中使用这一行 . 这样,您就不必编写std :: cout或std :: cin等 . 对于std :: string,如果我包含在c代码中,编译器是否会感到困惑?对于下面的变量str,它被认为是cstring类型的字符串...
  • -3 votes
     answers
     views

    const char *在c中的std :: map中重复数据

    我有一个罕见的问题 . 我已经将一个结构存储到std :: map中,插入了第一个数据并正常运行,但是当我尝试存储多个结构数据时,所有 const char* 的所有 const char* 值都在结构内部丢失并被替换用新数据 . 我恢复了代码: struct Emitter{ . . const char * name; const char * file; } Emitter metad...
  • 4 votes
     answers
     views

    C 11绑定std :: function vs存储元组和解包

    首先,我对C 11还是比较新的,所以如果我错过任何东西,请原谅我的疏忽 . 所以我要做的是基本上调用函数传递函数和该函数的任意参数#,将其存储起来然后稍后异步调用它 . 而且似乎有两个主要选项: 使用std :: bind将std :: function绑定到其参数(使用variadic模板获取),然后再调用它 将参数包转换为元组,存储和std :: function,然后再次将元组解包为...
  • 1 votes
     answers
     views

    为什么std :: ifstream构造函数不采用std :: string? [重复]

    可能重复:std :: ifstream类的设计为什么(i | o)fstream采用const char *参数作为文件名? 看看std :: ifstream的构造函数,我发现两个: ifstream ( ); explicit ifstream ( const char * filename, ios_base::openmode mode = ios_base::in ); 为什么第...
  • 9 votes
     answers
     views

    为什么std ::由有经验的编码人员使用而不是使用命名空间std;? [重复]

    可能重复:为什么'使用命名空间std;'被认为是C的坏习惯? 有一天,当我问一个问题,有人回答说如果有人问一个问题,告诉他们正确的做法,而不是 using namespace std; ,我认为这有点奇怪,因为 using namespace std; 更容易,但我想我'm failing right now as I am a '初学者'编码你们知道的更好 所以我想我的问题是:为什么 std...
  • 6 votes
     answers
     views

    打印东西时为什么不保留订单,首先是cerr然后是cout?

    我有带有 Xubuntu 14.04的g版本4.8.4编译器 . 在我的OpenCV代码(用Eclipse CDT编写)中,我连续写了以下三行: /* Some codes here*/ cerr &lt;&lt; &quot;No match found. # of false positives: &quot; &lt;&lt; falsePositives &lt;&lt; endl; c...
  • 131 votes
     answers
     views

    C逐行读取文件

    我写了这个函数来从文件中读取一行: const char *readLine(FILE *file) { if (file == NULL) { printf(&quot;Error: file pointer is null.&quot;); exit(1); } int maximumLineLength = 128; cha...
  • 0 votes
     answers
     views

    使用向量用C求解Eratosthenes的Sieve并收到异常的错误信息

    在今天,我问了一个关于用2D阵列实现Eratosthenes筛子的问题,并且有几个人告诉我使用向量代替 . 唯一的问题是我不知道如何在C中使用向量 . 我今天使用向量而不是2D数组重写了我的程序,直到程序结束时我才收到以下错误: sieve.h:在函数'void printPrimes(std :: vector *,int)':sieve.h:42:20:error:'std :: cout ...
  • 4 votes
     answers
     views

    C:使用“std”时“架构x86_64的未定义符号”错误

    我是一名新的C程序员,我正在尝试运行一个简单的&lt;10行程序作为系统测试 . 我的操作系统是OSX 10.9.5,我的gcc版本是4.2.1 . 我已经创建了一个文件“test.cpp”,我正在使用gcc在命令行上编译 . 命令是“gcc test.cpp -o test” . 然后我跑“./test” . (是的,这是听起来基本的过程 . )文件如下: #include &lt;iostr...
  • -3 votes
     answers
     views

    编译器问题:iostream不工作

    当我用g 5.1.1编译我的c代码时,它说 “narc05b.cpp:在函数'int main()'中:anarc05b.cpp:5:3:错误:'cout'未在此范围内声明cout &lt;&lt;”hello \ n“; ^ anarc05b.cpp:5: 3:注意:建议替代:在anarc05b.cpp中包含的文件中:1:0:/ usr / include / c /5.1.1/iostrea...
  • 95 votes
     answers
     views

    C 11中是否有一个范围类用于基于范围的循环?

    我发现自己刚刚写了这篇文章: template &lt;long int T_begin, long int T_end&gt; class range_class { public: class iterator { friend class range_class; public: long int operator *() const { return...
  • 5 votes
     answers
     views

    带有指向数据成员的指针的std :: thread

    我正在阅读std::thread documentation at cppreference(并不总是100%准确,我知道)并注意到 std::thread 的行为的以下定义,当传递&quot;pointer-to-data-member&quot;(不是&quot;pointer-to-member-function&quot;)作为其第一个参数( f )并且所需类的对象作为其第二个参数(复制到...
  • 0 votes
     answers
     views

    使用ios_base和ofstream时出现C错误

    void DataSaver::save( const std::vector&lt;long&gt;&amp; vec ) { using std::ios_base; std::ofstream file; file.open( &quot;/home/david/Desktop/test&quot;, ios_base::out | ios_base::binary ...
  • 46 votes
     answers
     views

    C std :: tuple破坏顺序

    有一条规则说明std :: tuple的成员被破坏了吗? 例如,如果 Function1 将 std::tuple&lt;std::unique_ptr&lt;ClassA&gt;, std::unique_ptr&lt;ClassB&gt;&gt; 返回到 Function2 ,那么我可以确定(当 Function2 的范围被保留时)第二个成员引用的 ClassB 实例在第一个成员引用的 Cla...
  • 4 votes
     answers
     views

    std :: condition_variable ::等待谓词

    在std :: condition_variable的文档中,有一个wait()重载作为参数作为谓词函数 . 该函数将一直等到谓词函数为真的第一个wake_up . 在documentation 据说这相当于: while (!pred()) { wait(lock); } 但是也: 此异常可用于在等待特定条件变为真时忽略虚假唤醒 . 注意,在进入此方法之前必须获取锁定,在等待(锁定)...
  • 2 votes
     answers
     views

    使用strcat访问内存不良

    我正在使用linux . 我有一个叫做的函数: PlayBackgroundIntroMusic((char *)&quot;IntroMusic&quot;); 功能是: void SoundManager:: PlayBackgroundIntroMusic( char * musicFile) { // Concatenate extension for each plat...
  • -2 votes
     answers
     views

    有没有办法从文件中读取空格而不使用std :: getline?

    我理解std :: getline是实现这一目标的最有效方法,还有另外一种不涉及此问题的方法吗? 应该在char数组中读取任何给定文件的内容 即char内容[50]; 目前,如果我读到“他跳过棕色狐狸” . 从使用标准ifstream过程的文件中我得到“Hejumpedoverthebrownfox” . 但我希望空格(“”)在数组中注册为字符 . 没有std :: getline有没有办法做到这...
  • -4 votes
     answers
     views

    在std :: vector中查找项目

    我想检查一个元素是否存在于向量中,所以我可以处理每个案例 . 我遇到了这个公式: #include &lt;algorithm&gt; if ( std::find(vector.begin(), vector.end(), item) != vector.end() ) do_this(); else do that(); 我不明白为什么我们最后需要vector.end(),is...
  • 214 votes
     answers
     views

    你可以在迭代它时从std :: list中删除元素吗?

    我有代码看起来像这样: for (std::list&lt;item*&gt;::iterator i=items.begin();i!=items.end();i++) { bool isActive = (*i)-&gt;update(); //if (!isActive) // items.remove(*i); //else other_...
  • 388 votes
     answers
     views

    “STL”和“C标准库”之间有什么区别?

    有人提请我注意,我声称STL术语被用来引用整个C标准库,而不是从SGI STL中获取的部分 . (...)它指的是“STL”,尽管很少有人仍然使用STL(在SGI设计) . C标准库的部分内容基于STL的部分内容,许多人(包括几位作者和臭名昭着的错误cplusplus.com)仍然将这些部分称为“STL” . 但是,这是不准确的;事实上,C标准从未提及“STL”,两者之间存在内容差异 . (...
  • 7 votes
     answers
     views

    使用'find'或'remove'中的迭代器擦除

    我想知道从C中向量中移除元素的最佳做法是什么 . 我见过多次使用std :: remove来查找和删除元素,然后使用erase从向量中删除元素 . 但是为什么它比使用find获取要删除的元素的迭代器然后使用该迭代器的擦除更好? 谢谢
  • 1 votes
     answers
     views

    将向量中的对象指针移动到不同的向量

    现在我有两个Object指针向量 std::vector&lt;Object*&gt; vec1; std::vector&lt;Object*&gt; vec2; 让我们说vec1有两个对象,vec2没有 . 如何在不破坏实际对象的情况下将vec1中的一个对象移动到vec2?因此,最后两个向量的大小为1,每个向量都有一个对象指针 .
  • -2 votes
     answers
     views

    如何获取字符串的用户输入然后是int?

    我有一个数据库类,它是一个包含许多对象的数组 . 该函数将从用户获取一些输入,包括字符串和整数 例如: std::cout &lt;&lt; &quot;Enter first name: &quot;; std::cin.ignore(std::numeric_limits&lt;std::streamsize&gt;::max(), '\n'); std::getline(std::cin, ...
  • 0 votes
     answers
     views

    我怎样才能确切地看到std :: cin输入缓冲区中的内容?

    我遇到的问题是,当一个人在控制台中键入内容时,我想要确切地看到输入缓冲区中的内容我知道如何查看它的唯一方法是使用std :: cin :: getline()或std: :getline(),但我认为这两个都写入char指针或std :: string对象,具体取决于系统特定的行尾字符是否合适 . 例如,我认为在Windows上如果你在控制台上按Enter键它会输入'\ r''\ n',但是当我尝...
  • 1 votes
     answers
     views

    c set输出的元素多于它包含的元素

    我有一个非常大的字符串集,我想找到唯一字符串的子集,我正在使用set容器 . 这些方法转到MySQL数据库,引入一组新的字符串并尝试将它们添加到一个集合中 . 我检查插入的返回以确定是否添加了字符串(第一次出现)或者它已经存在 . #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;fstream&gt; #include ...

热门问题