小编exp*_*ter的帖子

为什么libstdc++-v3中declval的实现看起来那么复杂?

下面的代码来自 libstdc++-v3 std::type_traits,它是一个实现std::declval

  template<typename _Tp, typename _Up = _Tp&&> // template 1
    _Up
    __declval(int);
  template<typename _Tp> // template 2
    _Tp
    __declval(long);
  template<typename _Tp> // template 3
    auto declval() noexcept -> decltype(__declval<_Tp>(0));
Run Code Online (Sandbox Code Playgroud)

但我认为我可以declval简单地实现:

template <typename T> T declval();
Run Code Online (Sandbox Code Playgroud)

这是我的测试代码:

#include <iostream>
using namespace std;

struct C {
    C() = delete;
    int foo() { return 0; }
};

namespace test {
template <typename T> T declval();
};// namespace test

int main() {
    decltype(test::declval<C>().foo()) n = 1;
    cout …
Run Code Online (Sandbox Code Playgroud)

c++ templates decltype c++11 declval

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

BufferedInputStream 和 java.nio.Buffer 有什么区别?

我们可以BufferedInputStream通过装饰 a 来得到 a FileInputStream。并且从 Channel 获取的FileInputStream.getChannel内容也可以读取到Buffer.

BufferedInputStream那么,和 之间有什么区别 java.nio.Buffer?即,我什么时候应该使用BufferedInputStream以及什么时候应该使用java.nio.Bufferand java.nio.Channel

java buffer iostream nio fileinputstream

7
推荐指数
1
解决办法
2232
查看次数

C c之间有什么区别; 和C c = C();?

#include<iostream>
using namespace std;

class C{
private:
    int value;
public:
    C(){
        value = 0;
        cout<<"default constructor"<<endl;
    }
    C(const C& c){
        value = c.value;
        cout<<"copy constructor"<<endl;
    }
};
int main(){
    C c1;
    C c2 = C();
}
Run Code Online (Sandbox Code Playgroud)

输出:

默认构造函数

默认构造函数

问题:

因为C c1;默认构造函数会被调用,因为C c2 = C();我以为默认构造函数会被调用来初始化一个临时对象,然后复制构造函数会调用初始化c2,看来我错了.为什么?

c++ initialization copy-constructor default-constructor

6
推荐指数
1
解决办法
161
查看次数

大写字母'J'在成本函数J(θ)中的含义是什么?

我看到很多人用'J(θ)'来表示成本函数,大写字母'J'到底是什么意思?

machine-learning

6
推荐指数
1
解决办法
1249
查看次数

如何在Spark的TreeNode中解释TreeNode类型限制和自我类型?

从Spark SQL 中TreeNode的定义:

abstract class TreeNode[BaseType <: TreeNode[BaseType]] extends Product {
  self: BaseType =>
  ...
}
Run Code Online (Sandbox Code Playgroud)

这是什么说的亚型TreeNodeBaseType?什么是可以接受的?

scala treenode self-type apache-spark-sql

5
推荐指数
1
解决办法
415
查看次数

如果C++类包含const引用和非const引用复制构造函数怎么办?

摘录1:

#include<iostream>
using namespace std;

class C{
public:
    C(){}
    C(const C& c){
        cout<<"const copy constructor called"<<endl;
    }
};
int main(){
    C c1;
    C c2 = c1;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

output:const复制构造函数调用


摘录2:

#include<iostream>
using namespace std;

class C{
public:
    C(){}
    C(const C& c){
        cout<<"const copy constructor called"<<endl;
    }
    C(C& c){
        cout<<"non-const copy constructor called.\t "<<endl;
    }
};
int main(){
    C c1;
    C c2 = c1;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:调用非const复制构造函数


摘录3:

#include<iostream>
using namespace std;

class C{
public:
    C(){}
    C(const …
Run Code Online (Sandbox Code Playgroud)

c++ copy-constructor const-reference

5
推荐指数
1
解决办法
334
查看次数

当wordCount中不存在key时,我应该将++ wordCount [key]用于unordered_map <string,int>吗?

见下面的代码:

unordered_map<string, int> wordCount;
for(string word: words)
    ++wordCount[word];
Run Code Online (Sandbox Code Playgroud)

题:

++wordCount[word];当wordCount中不存在word时,它是否适合使用?我总是看到有人这样使用,但我并不确定.

这里的解释说:

如果k与容器中任何元素的键不匹配,则该函数将使用该键插入一个新元素,并返回对其映射值的引用.请注意,即使没有为元素指定映射值(使用其默认构造函数构造元素),这也会将容器大小增加1.

我知道int默认是未初始化的.所以,我认为像这样直接增加地图价值是不安全的,是吗?

c++ unordered-map

4
推荐指数
1
解决办法
155
查看次数

如何将log4j + slf4j添加到pom.xml?

我正在尝试同时使用slf4j和log4j。经过一番谷歌搜索,我找到了一些解决方案:

  1. 简单地将slf4j添加到pom.xml中如何包装log4j?
  2. https://dzone.com/articles/adding-slf4j-your-maven
  3. 如何使SLF4J“ Hello World”与log4j一起使用?

与slf4j和log4j相关的jar的各种名称和版本让我非常困惑。slf4j-log4j12,log4j,log4j-core,log4j-over-slf4j,log4j-slf4j-impl,log4j-api,slf4j-impl,log4j12-api,log4j-to-slf4j ............我什至无法了解这些不同罐子的功能。

那么,我应该选择哪种组合和版本?

logging log4j slf4j maven

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

Jackson默认将列表反序列化为ArrayList吗?

我运行以下代码片段:

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class JsonMapper {
    public static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();

    public static <T> String toJson(final T object) throws JsonProcessingException {
        return OBJECT_MAPPER.writeValueAsString(object);
    }

    public static <T> T fromJson(final String json, final Class<T> clazz) throws IOException {
        return OBJECT_MAPPER.readValue(json, clazz);
    }

    public static <T> T fromJson(final String json, final TypeReference<T> type) throws IOException {
        return OBJECT_MAPPER.readValue(json, type);
    }
    public static void main(String args[]) throws …
Run Code Online (Sandbox Code Playgroud)

java json jackson

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

Java中的CountDownLatch有什么意义?

CountDownLatch in java是一个高级同步实用程序,用于防止特定线程在所有线程准备就绪之前开始处理.

但是,Semaphore完全可以做同样的事情.那么,有什么优点CountDownLatch呢?

还有一个问题:如果CountDownLatch确实有一些优点,为什么它只被设计为使用一次?我认为添加set方法来重置计数很容易.

java concurrency multithreading semaphore countdownlatch

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