标签: standard-library

标准 C++ 库链接

我试图了解标准库何时链接到我自己的二进制文件。我写了以下内容:

#include <stdio.h>

double atof(const char*);

int main(){
    const char * v="22";
    printf("Cast result is %f", atof(v));
}
Run Code Online (Sandbox Code Playgroud)

它编译成功g++ -c main.cpp,但是当我链接刚刚创建的目标文件时出现错误。错误描述为:

/tmp/ccWOPOS0.o: In function `main':
main.cpp:(.text+0x19): undefined reference to `atof(char const*)'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

但我不明白为什么会出现这个错误?我认为标准 C++ 库通过链接ld器自动链接到我的二进制文件。包含头文件和仅声明我需要显式使用的函数之间有什么区别。

c++ linker standard-library

3
推荐指数
1
解决办法
1281
查看次数

将 RecursiveIteratorIterator 与命名空间一起使用?

我的问题是,当我使用命名空间时,我无法使用标准 PHP 库的 RecursiveIteratorIterator 类。以下代码:

<?php namespace mynamespace;

    $arr = Array("abc", Array("def", "ghi", Array("jkl")));
    $it = new RecursiveIteratorIterator(new RecursiveArrayIterator($arr));
    $result = iterator_to_array($it, false);

?>
Run Code Online (Sandbox Code Playgroud)

返回:

PHP 致命错误:未捕获错误:在...中找不到类“mynamespace\RecursiveIteratorIterator”

php spl iterator namespaces standard-library

3
推荐指数
1
解决办法
1478
查看次数

在安全的 Rust 中是否可能出现未定义的行为?

有没有办法在不使用 Rust 的情况下实现未定义的行为unsafe

当然,这种行为可以由第三方库封装在“安全”函数中,所以假设我们只使用标准函数。

unsafe standard-library undefined-behavior rust

3
推荐指数
1
解决办法
836
查看次数

为什么大多数主流编程语言的标准库中都没有实现Disjoint Set(并查算法)?

我找到了关于如何为 C++、Java、Kotlin、Python 等实现不相交集(并集查找算法实现)的文章。它的实现并不是特别困难,尽管存在一些出错的空间。令我惊讶的是,没有任何语言在其标准库中包含这种形式。

是否有一个原因?考虑到大多数标准库中已经存在多少种不同的数据结构,令我惊讶的是没有一个(我发现)包含这一点。是不是太晦涩难懂了?

programming-languages language-design standard-library

3
推荐指数
1
解决办法
1785
查看次数

我怎样才能轻松使用char**?

char**经常需要插入或执行查找.这是非常繁琐的realloc(),malloc()数组和字符串的插入.

有没有标准的方法可以添加字符串或进行查找char**?我想我正在寻找类似字符串的东西,但是使用char**的是.

c++ char standard-library

2
推荐指数
1
解决办法
329
查看次数

使用自定义比较器返回priority_queue

我有一个函数需要根据一些输入参数返回一个排序列表.我选择了一个std::priority_queue来保存这个列表.

但是编译器给了我一个我不认识的错误.这是我的代码:

struct DepthCompare {
    bool operator()
        (const struct inst *&lhs, const struct inst *&rhs) const
    {
        return lhs->depth < rhs->depth;
    }
};

typedef priority_queue<struct inst*> HeuristicList;
HeuristicList getHeuristicList(struct BasicBlock &) {

    HeuristicList ret( DepthCompare );
    return ret;
}
Run Code Online (Sandbox Code Playgroud)

编译器conversion from 'HeuristicList (*)(DepthCompare)' to non-scalar type 'HeuristicList' requested 在return语句的行上说了一个.

它看起来不像我想要返回一个指针.出了什么问题?

c++ priority-queue standard-library

2
推荐指数
1
解决办法
1791
查看次数

大小数字的C++标准库常量?

C++ std lib中有一个常量,意味着"最大可表示数"和"最小可表示数"吗?在Matlab中,我们有类似的东西EPS,realmaxrealmin.我想知道是否有相当于C++的东西.

c++ standard-library

2
推荐指数
1
解决办法
281
查看次数

为什么HashMap有iter_mut()但HashSet没有?

什么是用于提供设计原理iter_mut的功能HashMap,但不是HashSet在锈?

卷一个人自己是否是一个失礼(假设甚至可以做到)?

拥有一个可以缓解导致的情况

以前的借款X发生在这里; 在X借入结束之前,不可变借款会阻止后续移动或可变借款

一个非常复杂的例子(Gist),它没有显示参数传递的原因.有一个简短的评论解释痛点:

use std::collections::HashSet;

fn derp(v: i32, unprocessed: &mut HashSet<i32>) {
    if unprocessed.contains(&v) {

        // Pretend that v has been processed
        unprocessed.remove(&v);
    }   
}

fn herp(v: i32) {
    let mut unprocessed: HashSet<i32> = HashSet::new();
    unprocessed.insert(v);

    // I need to iterate over the unprocessed values
    while let Some(u) = unprocessed.iter().next() {

        // And them pass them mutably to another function
        // as I will process …
Run Code Online (Sandbox Code Playgroud)

idiomatic standard-library rust

2
推荐指数
2
解决办法
1208
查看次数

Ruby的`.present?`没有Rails吗?

我正在开发用于自动化的“无轨” Ruby守护进程(尽管理论上它在Rails目录中运行)。对于一般用途和问题的原则,我想找到(最)“原生” /共同利用的一个Ruby版本的方式.present?/ .blank?/ .empty?/ .nil?以确定是否存在一个数组或一个(哈希)值,不为空(即[]{})。

通过我的阅读(例如,堆栈溢出)和测试,所有这些函数似乎都是特定于Rails的方法,是ActiveSupport(?)的一部分。

来自其他Web /解释器语言(PHP,Python,JS等),这是大多数语言(带有数组的大多数语言)的通用逻辑功能,具有以一种或另一种方式(例如PHP isset( ... )或JavaScript .length)构建的功能。。

我知道有针对的RegEx解决方法.blank?,但.present?似乎需要进行异常处理才能确定其是否“存在”)。我很难相信它不存在,但是在没有Rails参与的情况下很少谈论Ruby。

ruby daemon standard-library daemons ruby-daemons

2
推荐指数
1
解决办法
375
查看次数

为什么ofstream作为类成员不能传递给线程?

我编写了一个带有operator()重载的类,我想像传递函数指针一样将该类传递给线程,因此我将其放置在线程中,如下所示。但是,它未能编译,我注意到ofstream是它失败的原因。为什么会这样呢?

#include <thread>
#include <fstream>
using namespace std;

class dummy{

    public :
        dummy(){}
        void operator()(){}

    private:
        ofstream file;
};


int main()
{ 
  dummy dum;
  thread t1(dum);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ multithreading standard-library

2
推荐指数
1
解决办法
62
查看次数