小编Ben*_*ler的帖子

通用模板非类型参数

我希望我的类接收非类型模板参数,但我不想指定非类型参数的类型.我可以这样写:

template<class Type, Type param>
class A
{};
Run Code Online (Sandbox Code Playgroud)

然后可以使用如下:

A<int,3> a;
Run Code Online (Sandbox Code Playgroud)

这是多余的,因为一旦我知道,param = 3那我就知道了Type = int.有没有办法写这个,以便所有以下行编译和实例化不同的类型?

A<3> a;
A<3.0> b;
A<3.0f> c;
Run Code Online (Sandbox Code Playgroud)

c++ templates

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

C++删除指向包含另一个指针的对象的指针

让我们说吧

class A {
  A* array;
public:
   A (){ 
    array= new A [4];
  }

  ~A (){
    delete array;
  }
}
Run Code Online (Sandbox Code Playgroud)

如果我们在堆上创建这样的对象,我们如何释放对象

A* object_ptr =new A();
Run Code Online (Sandbox Code Playgroud)

我对释放指向包含另一个指针的对象的指针感到有点困惑.....

c++ object dynamic-memory-allocation

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

何时使用TreeMap代替HashMap

我需要一个支持3种操作的映射:“插入”,“删除”和“按排序顺序迭代”。这正是TreeMapJava中的接口。话虽如此,也可以通过使用a HashMap并在每次迭代之前对其进行排序来实现它。为了分析不同的方法,可以说我执行n插入和m删除操作,先读取“ r”,然后进行迭代。

随着TreeMap我们有以下实现:

TreeMap<Integer, Integer> tm = Maps.newTreeMap();
for (int i=0;i<n;++i) {tm.put(i, 2*i);} // O(n*log(n))
for (int i=0;i<m;++i) {tm.remove(i);} // O(m*log(m))
for (int i=0;i<r;++i) {tm.get(i);} // O(r*log(n-m))
for (Integer i : tm) {print(i);} // O(n-m)
Run Code Online (Sandbox Code Playgroud)

总而言之,我们的总运行时间为 O(n*log(n) + m*log(m) + r*log(n-m))

随着HashMap我们有以下实现:

HashMap<Integer, Integer> hm = Maps.newHashMap();
for (int i=0;i<n;++i) {hm.put(i, 2*i);} // O(n)
for (int i=0;i<m;++i) {hm.remove(i);} // O(m)
for (int i=0;i<r;++i) {hm.get(i);} // O(r)
List<Integer> sortedList …
Run Code Online (Sandbox Code Playgroud)

java collections

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

Java中静态变量的初始化顺序

我在两个不同的文件中有两个类,每个文件都有一个静态变量,我想知道是否有一种方法可以预测哪一个将首先被初始化(是否依赖于实现)?我的代码看起来像这样?

File1:
public class A
{
  public static boolean a = Logger.log();
}

File2:
public class B
{
  public static boolean b = Logger.log();
}

File3:
public class Logger
{
  public static boolean log();
}
Run Code Online (Sandbox Code Playgroud)

java static

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

有效地找到最小和最大值

我有两个整数参数ab.和两个整数变量maxmin.我要分配到max的最大的abmin最小的两个.我需要做这个操作数百万次,所以我想优化它.我目前正在做以下事情:

min = a < b ? a : b;
max = a > b ? a : b;
Run Code Online (Sandbox Code Playgroud)

这个问题是需要两个if语句.我想知道是否有更好的方法来做到这一点.

c++ algorithm optimization comparison

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

在catch块方法中递归调用返回值

这是我的问题:

我必须连接到代理服务(这里是activemq),所以我这样做:

public GenericMessageManager(String url, String producerQueue,
        String consumerQueue) {

    Connection connection;
    try {
        connection = getConnection(url);
        session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        producer = createProducer(producerQueue);
        consumer = createConsumer(consumerQueue);
        connection.start();
        logger.info("Connection to broker started");
    } catch (JMSException e) {

    }
}

private Connection getConnection(String url) {
    ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
            url);
    try {
        Connection connection = connectionFactory.createConnection();
        return connection;
    } catch (JMSException e) {
        if (e.getLinkedException() instanceof SocketTimeoutException) {
            logger.warn(url + " not responding, try on localhost");
            getConnection("tcp://127.0.0.1:61616");
        }
    }
    return …
Run Code Online (Sandbox Code Playgroud)

java methods recursion return

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

在字典中查找最大长度值

我有一个表格的字典{'a': [1, 2, 3], 'b': [1, 2, 3, 4], 'c': [13. 11]}.我想找到dict中最长值的长度.在这种情况下将是4.我知道如何使用数组执行此操作,如下所示:

maxSoFar = 0;
for key in dict.keys():
  if dict[key] > maxSoFar :
    maxSoFar = len(dict[key])
Run Code Online (Sandbox Code Playgroud)

我的问题是,有一个神奇的一个班轮来做这个吗?

python dictionary

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

获取可迭代的前n个元素

我有一个Iterable<T>.这个iterable包含m元素.我想创建一个Iterable<T>包含n元素,其中n = min(m, N)一些N用户输入.这些元素应该是n给定iterable 的第一个元素.

理想情况下,返回的Iterable将由原始Iterable而不是元素的副本支持.

是否有神奇的功能可以做到这一点,也许在番石榴?

guava java-7

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