我已经明白对移动的内容调用成员函数std::unique_ptr是未定义的行为。我的问题是:如果我调用.get()一个unique_ptr然后移动它,原来的.get()指针会继续指向原来的唯一指针的内容吗?
换句话说,
std::unique_ptr<A> a = ...
A* a_ptr = a.get();
std::unique_ptr<A> a2 = std::move(a);
// Does *a_ptr == *a2?
Run Code Online (Sandbox Code Playgroud)
我认为确实如此,但我想确定一下。
(“内容”可能是错误的词。我的意思是当您取消引用指针时获得的数据)
让NoBroadcastArray成为 的子类np.ndarray。如果x是 的一个实例NoBroadcastArray并且arr是一个np.ndarray,那么我想要
x[slice] = arr
Run Code Online (Sandbox Code Playgroud)
当且仅当与arr.size切片大小匹配时才能成功。
x[1] = 1 # should succeed
x[1:2] = 1 # should fail - scalar doesn't have size 2
x[1:2] = [1,2] # should succeed
x[1:2] = np.array([[1,2]]) # should succeed - shapes don't match but sizes do.
x[1:2, 3:4] = np.array([1,2]) # should fail - 1x2 array doesn't have same size as 2x2 array
Run Code Online (Sandbox Code Playgroud)
换句话说,只有当 RHS 不必更改大小以适合 LHS 切片时,分配才会成功。我不介意它是否改变形状,例如,如果它从形状为 …
在C中,
int* a, b;
Run Code Online (Sandbox Code Playgroud)
将使a整数指针和b成为整数.
那这个呢?是b整数还是整数指针?
typedef int* foo;
foo a, b;
Run Code Online (Sandbox Code Playgroud) 假设apples是一个n个苹果的列表,我有一个apple_evaluator(apple)评估苹果'良好'的功能.apples按"善" 排序我用apples.sort(key = apple_evaluator)或sorted(apples, key=apple_evaluator).
将apple_evaluator得到所谓O(n)的时间(如Python的预先计算apple_evaluator(apple) 每个apple在apples随后各种apples使用这些值),或者为O(n log n)的时间(如Python的单位计算重新计算apple_evaluator每个排序使得比较时间值)?