:=用于数据表中的多个同时分配不尊重更新值。x 列递增,然后我打算将 x 的更新值分配给 y。为什么价值不等于预期?
> z = data.table(x = 1:5, y= 1:5)
> z[, `:=` (x = x + 1, y = x)]
> # Actual
> z
x y
1: 2 1
2: 3 2
3: 4 3
4: 5 4
5: 6 5
> # Expected
> z
x y
1: 2 2
2: 3 3
3: 4 4
4: 5 5
5: 6 6
Run Code Online (Sandbox Code Playgroud) 假设我有一个非原始数据类型,根据比较器有重复项,并且我尝试使用...对其进行排序std::sort...它每次都会给出相同的排序数组吗(如果我们在每个结果中比较排序数组,它会相同吗?)。我知道它不稳定(它可能会改变相等元素的顺序),但是相同输入数组的结果是否保证是确定性的(可靠且可重现)?
struct Data {
std::string str;
int data;
};
struct {
bool operator()(Data a, Data b) const { return a.data > b.data; }
} customLess;
int main() {
std::vector v = {
{"Rahul", 100},
{"Sachin", 200},
{"Saurav", 200},
{"Rohit", 300},
// .....
};
for(uint k = 0; k < 1000; k++) {
auto v2 = v;
std::sort(v2.begin(), v2.end(), customLess);
}
}
Run Code Online (Sandbox Code Playgroud)