我以为括号初始化不允许缩小。但是为什么int const
允许char
括号初始化?
int value1 = 12;
char c1{value1}; // error! no narrowing
const int value2 = 12;
char c2{value2}; // why is this fine?
Run Code Online (Sandbox Code Playgroud)
在Godbolt上看到它。
我正在尝试使用 react-testing-library 测试属于 redux-form 一部分的代码。为文本输入字段调用 fireEvent.change 以设置新值我希望应该更新输入的值,但它从未发生过。请在下面找到测试的片段。完整代码可以在https://codesandbox.io/s/redux-form-simple-example-n3820找到 如何使用 react-testing-library 测试 redux-form 的好例子?
...
const firstNameInput = getByTestId(container, "firstName");
const lastNameInput = getByTestId(container, "lastName");
const firstName = "firstName";
const lastName = "lastName";
fireEvent.change(firstNameInput, { target: { value: firstName } });
fireEvent.change(lastNameInput, { target: { value: lastName } });
const submitButton = getByTestId(container, "submitButton");
fireEvent.click(submitButton);
expect(onSubmit).toHaveBeenCalledTimes(1);
expect(onSubmit).toHaveBeenNthCalledWith(firstName, lastName);
Run Code Online (Sandbox Code Playgroud) 我尝试使用 CUDA 运行代码,出现此错误,系统似乎有问题
完整代码:我知道了CUDACast #10a - 你的第一个 CUDA Python 程序,没有名为 numbapro 的模块
import numpy as np
from timeit import default_timer as timer
from numba import vectorize
@vectorize(["float32(float32, float32)"], target='cuda')
def VectorAdd(a, b):
return a + b
def main():
N = 32000000
A = np.ones(N, dtype=np.float32)
B = np.ones(N, dtype=np.float32)
C = np.zeros(N, dtype=np.float32)
start = timer()
C = VectorAdd(A, B)
vectoradd_timer = timer() - start
print("C[:5] = " + str(C[:5]))
print("C[-5:] = " + str(C[-5:]))
print("VectorAdd took …
Run Code Online (Sandbox Code Playgroud) 在C ++入门5版上。第12章动态内存:编写如下:
shared_ptr p(u); P承担所有权
uniqe_ptr
u
; 使为u
空。shared_ptr p(q,d)假定内置指针q
指向的对象的所有权。q
必须可转换为T*
($ 4.11.2,第161页)。p
将使用可调用对象d
($ 10.3.2,p.388)代替delete
freeq
。
unque_ptr
内置对象的和来自于...”。有人可以向我解释这一段吗?非常感谢。
这是我的代码,我认为每条提示行将打印指针指向的相应对象。为什么会出现错误?这会打印一些随机的数字列表,首先总是正确的。
int* f()
{
int array[10] = {1,2,3,4,5,6,7,8,9,10};
int *p = array;
return p;
}
int main()
{
int* ptr = f();
cout << *(ptr+0) << endl;
cout << *(ptr+1) << endl;
cout << *(ptr+2) << endl;
cout << endl;
}
Run Code Online (Sandbox Code Playgroud) std::vector<unique_ptr<int>> v;
v.push_back(std::make_unique<int>(1));
unique_ptr<int>& rp0 = v[0];
cout << "rp1="<<rp0.get()<<"\n";
cout << "*rp1="<<*rp0<<"\n";
v.push_back(std::make_unique<int>(2));
cout << "rp1="<<rp0.get()<<"\n";
cout << "*rp1="<<*rp0<<"\n";
Run Code Online (Sandbox Code Playgroud)
为什么第二张打印结果与第一张打印结果不同?
rp1=0x1783c20
*rp1=1
rp1=0
Segmentation fault (core dumped)
Run Code Online (Sandbox Code Playgroud) 我试图用数组中的整数填充向量,但是当我检查向量的内容时,所有值均为零。
我正在使用vector.push_back()尝试填充向量,因此它将以与数组相同的顺序,因为我需要以特定方式对其进行排序。
unsigned char* buffer = new unsigned char[size];
std::vector<unsigned char> *data = new std::vector<unsigned char>(size);
fread(buffer, sizeof(unsigned char), size, f);
for(int transfer = 0; transfer < size; transfer += 1){
std::cout << buffer[transfer];
data->push_back(buffer[transfer]);
std::cout << int(data->at(transfer));
}
fclose(f);
Run Code Online (Sandbox Code Playgroud)
当我打印输出时,我可以看到当它们来自缓冲区数组时这些值不为零,但是当我从数据向量读取时它们却为零。这是一些示例输出?0 $ 0。
在尝试学习 std::move 和右值引用时,我刚刚遇到以下内容:
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<int> vecNumbers;
vecNumbers.push_back(10);
vecNumbers.push_back(20);
foo(std::move(vecNumbers));
std::cout<<"After Move \n";
std::cout<<"size:"<<vecNumbers.size()<<"\n";
return 0;
}
void foo( std::vector<int> &&value)
{
std::cout<<"size in Function:"<<value.size()<<"\n";
}
Run Code Online (Sandbox Code Playgroud)
输出
size in Function:2
After Move
size:2
Run Code Online (Sandbox Code Playgroud)
在调用向量上的移动后,我预计大小为 0 ,但这里它仅作为参考移动。有人可以解释一下这里发生了什么吗?
我可以在地图中分配否定元素作为键,例如map[-1]=10;
它如何处理它,它使用了什么数据结构?我知道unordered_map在内部使用哈希,它如何处理哈希的否定元素?如果我使用数组进行哈希处理,则无法哈希负数元素,因为数组索引不能为负数
Visual Studios甚至Codechef都在编译我的代码,该代码缺少return语句。
我正在解决一些竞争性编程问题,并注意到我的程序在编译时没有在函数中使用return语句。我写了一个简单的函数,没有提到任何return语句,并且程序正在完美地编译。
这是代码
#include <iostream>
using namespace std;
int add(int x, int y)
{
int c = x + y;
}
int main() {
int a = add(1, 2);
cout << a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我期待一个我没有得到的错误,让我怀疑我的代码出了什么问题(当然不是上面的代码)。在上面的程序中,我得到的输出0
我不明白该怎么办?
我遇到了一个问题std::vector<T>
,在哪里T
是一个内置类型,说向量不是简单的可复制.
我想知道它是否正确并且正在寻找原因.
我尝试使用rand()
with srand()
生成随机索引号,但是我仍然得到重复的索引,是否还有其他方法可以遍历向量的所有元素?购买时可以随机获取索引而不影响向量元素random_shuffle()
的顺序,因为随机混洗会改变向量的顺序顺序至关重要的元素。
我正在基于 LeetCode 练习实现 LRU 缓存,但以下代码无法编译
using namespace std;
class LRUCache {
private:
list<int> data;
unordered_map<int, list<int>::iterator&> keys_to_data;
void update_recency(int key, list<int>::iterator& it) {
data.erase(it);
data.push_front(key);
keys_to_data[key]; // issue here
}
public:
LRUCache(int capacity) {
}
int get(int key) {
int value = -1;
auto value_it = keys_to_data.find(key);
if(value_it != keys_to_data.end()) {
value = *(value_it->second);
update_recency(key, value_it->second);
}
return value;
}
void put(int key, int value) {
}
};
Run Code Online (Sandbox Code Playgroud)
/Library/Developer/CommandLineTools/usr/include/c++/v1/tuple:1360:7: 错误:对类型 'std::__1::__list_iterator' 的引用需要一个初始化器 Second(_VSTD::forward<_Args2>(_VSTD: :get<_I2>(__second_args))...) ^
...巨大的堆栈跟踪...
/Users/Paul/Desktop/int/main.cpp:17:21:注意:在成员函数 'std::__1::unordered_map &、std::__1::hash、std::__1::equal_to 的实例化中, …