小编yto*_*ano的帖子

Java:添加到集合的地图

我试图写一个通用的函数,将一个元素添加到MapCollection秒.这适用于一个MapListS:

public static <TKey, TVal> void addToMapOfLists(Map<TKey, List<TVal>> map, TKey key, TVal val) {
    List<TVal> list = map.get(key);
    if (list == null) {
        list = new ArrayList<>();
        list.add(val);
        map.put(key, list);
    } else
        list.add(val);
}
Run Code Online (Sandbox Code Playgroud)

我想就这个函数的工作Map<TKey, Set<TVal>>以及对Map<TKey, List<TVal>>.我希望这应该是可能的,因为两个实现Collection都有add(TVal)我调用的成员.

我的问题是,当我尝试将参数更改Map<TKey, List<TVal>> mapMap<TKey, ? extends Collection<TVal>> map- 我需要以某种方式替换new ArrayList<>();为对实现者的构造函数的调用Collection.

java generics collections dictionary

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

c ++临时对象问题

这两个函数之间创建的临时对象的数量是否有差异?

string foo1() {
    return "";
} 

string foo2() {
    string s = "";
    return s;
}
Run Code Online (Sandbox Code Playgroud)

这是一个功课问题所以请假设没有编译器优化.

c++ temporary-objects

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

如何在系统时间关闭时使用SQL Server的GETDATE()?

我正在编写一个需要准确时间的应用程序(准确到几秒钟,没什么了不起的).该应用程序位于C#中,它与SQL Server连接,两者都驻留在同一台机器上.在我的应用程序代码中,我从NTP服务器获得时间,但我希望能够编写使用GETDATE()的SQL语句,而不必在SQL语句中写入当前时间.

不幸的是,服务器上的系统时间不会随着时间的推移保持准确.有没有办法在系统时间关闭时使用GETDATE()?我宁愿避免编写从NTP服务器检索时间然后更新系统时间的代码.

c# sql-server datetime systemtime sql-server-2008

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

从char*高效地实例化vector <char>

我的代码中有一个热点,我需要调用一个带有a的库函数,vector<char> vec我将数据作为char* data一个size_t len长度.我目前这样做:

vec.reserve(len);
std::copy(data, data+len, back_inserter(vec));
Run Code Online (Sandbox Code Playgroud)

就像我说这是一个热点.我想知道一次复制一个字节是否太慢,并且在每次迭代中复制4或8个字节会更快.我也没有意识到有一种方法可以用这种方式填充向量(因为它需要写入其data()成员).

有没有办法可以完全避免副本?

c++ stl vector

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

分配c-string的元素

我正在尝试对c-string进行冒泡排序 - 请参阅下面的函数.目的是根据ASCII码对字符进行排序.

编译器在运行时不会抱怨,此时我会遇到分段错误.我运行了gdb,程序运行正常,直到第12行.在第12行,gdb调试器声明'Process gdb-inferior killed'.

为什么第12行不正确?我在程序的其他地方遇到过这个问题 - 无法将字符分配给c字符串的元素.我知道strcpy()需要字符串赋值,但是对于特定的元素,我认为它没问题.任何帮助很多人赞赏.

    1. void bubblesort(char *str)
    2. {
    3.   int length = strlen(str);
    4.
    5.   for (int i = length - 1; i > 0; i--)
    6.     {
    7.       for (int j = 0; j < i; j++)
    8.         {
    9.           if (str[j] > str[j + 1])
    10.            {
    11.              char temp = str[j + 1];
    12.              str[j + 1] = str[j];
    13.              str[j] = temp;
    14.            }
    15.         }
    16.     }
    17. …
Run Code Online (Sandbox Code Playgroud)

c element c-strings variable-assignment bubble-sort

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