这对我来说是一个很奇怪的错误.检查以下代码:
void test(void){
vector<string> v;
v.push_back("hello");
auto fn=[=](){
v.push_back("world");
};
}
Run Code Online (Sandbox Code Playgroud)
第一个push_back方法传递了编译但第二个失败了,产生了错误:
错误:没有匹配的成员函数来调用'push_back'
编译器说明是:
**注意:(687,36)候选函数不可行:'this'参数的类型为'const vector'(又名'const vector,allocator >>')
但该方法没有标记const**.
好吧,我没有使用任何const参数,我无法弄清楚编译器试图告诉我什么.有人能帮助我吗?
我在接受采访时得到了这个问题.我说我可以用java或python之类的xreadlines()函数来遍历整个文件并获取列,但是面试官希望我只使用linux cmd.我怎样才能做到这一点?
如何立即运行lambda而不是存储它然后运行它?
而不是像这样存储lambda:
auto lambda = [&](){ std::cout << ++x << '\n'; }
Run Code Online (Sandbox Code Playgroud)
我试图像这样立即运行它:
[&](){ std::cout << ++x << '\n'; }
Run Code Online (Sandbox Code Playgroud)
但是这给了我这个错误信息:
Warning: expression result unused
Run Code Online (Sandbox Code Playgroud) 我见过这样编写的代码:
ifstream fin;
fin.open("largefile.dat", ifstream::binary | ifstream::in);
Run Code Online (Sandbox Code Playgroud)
现在这让我感到困惑,上面的代码和下面的代码之间是否有任何区别使用ios::binary和ios::in替换?
ifstream fin;
fin.open("largefile.dat", ios::binary | ios::in);
Run Code Online (Sandbox Code Playgroud) 我是用C++自学的,所以如果我的问题非常基本,我想请求你的原谅.
我正在关注www.learncpp.com上的教程
根据教程,我可以像这样定义我的c ++数组
int main()
{
using namespace std;
enum ArrayElements
{
MAX_ARRAY_SIZE = 5;
};
int anArray[MAX_ARRAY_SIZE];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是代码块继续发出错误
||=== Build: Debug in CH6 (compiler: GNU GCC Compiler) ===|
In function 'int main()':|
|6|error: expected primary-expression before 'enum'|
error: expected ';' before 'enum'|
||=== Build failed: 2 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|
Run Code Online (Sandbox Code Playgroud)
我只是不知道导致错误的是什么,或者我正在关注的教程是否存在问题?
我有一个 3D 数组,我需要使用单个 int 在该数组中查找 int。
我的阵列:
int arrayOne[3][3] = {
{1,2,3},
{4,5,6},
{7,8,9}
};
Run Code Online (Sandbox Code Playgroud)
我需要能够使用单个 int 来导航数组,例如:
int i = 4;
cout << arrayOne[4];
Run Code Online (Sandbox Code Playgroud)
这将打印出 5。
是否可以这样做或者是否有其他方法可以做到这一点?
我开始使用 3D 数组进行编码,如果不需要的话,我真的不想重写所有内容。
我用谷歌搜索了一下,没有找到解决方案。
问题:
如何将对象添加到std::vector<unique_ptr<obj>>?
我有一个课,这就是我想要做的......
下面,我试图std::unique_ptr<Ball>在我的矢量中使用,因为我认为这将是最简单的.
class Ball {
public:
Ball(float x, float y);
std::vector<std::unique_ptr<Ball>> object;
// other declarations below...
};
Run Code Online (Sandbox Code Playgroud)
在这里,我试图推送新元素:
Ball ball { 0, 0 };
for (size_t i { 0 }; i != 50; ++i) {
ball.object.push_back(new Ball { 0, 0 });
// ^ here is the error
}
Run Code Online (Sandbox Code Playgroud)
我不明白我得到的错误.
错误:
error C2664: 'void std::vector<std::unique_ptr<Ball,std::default_delete<_Ty>>,std::allocator<std::unique_ptr<_Ty,std::default_delete<_Ty>>>>::push_back(const std::unique_ptr<_Ty,std::default_delete<_Ty>> &)' : cannot convert argument 1 from 'Ball *' to 'std::unique_ptr<Ball,std::default_delete<_Ty>> &&'
具有这样声明的变量:
双*变量;
我认为这与写作完全一样
双变量[];
然后一些方法在起作用;
如何获得double数组的长度?我的意思是,我如何知道的最后一个初始化/访问/编写的元素位于哪个位置variable?
什么有效:
ifstream in("CallHello.cpp");
while(in >> s) {
if(s=="cout")
count++;
}
cout<<"Number of words : "<<count<<endl;
Run Code Online (Sandbox Code Playgroud)
此处输出为1,这是正确的.
什么行不通
ifstream in("CallHello.cpp");
while(in >> s && s == "cout") {
count++;
}
cout<<"Number of words : "<<count<<endl;
Run Code Online (Sandbox Code Playgroud)
输出为0,对于上面的错误.
为什么在使用&&时添加另一个条件会产生错误的输出?
考虑这段代码:
template <typename T1, typename T2>
auto max(T1 t1, T2 t2) -> decltype(true?t1:t2)
{
return t2 < t1 ? t1 : t2;
}
Run Code Online (Sandbox Code Playgroud)
当调用此函数时,::max(5, 7.2)我期望返回的类型与本例中的类型int相同。decltype(t1)int
double为什么在上面的代码中使用operator?:decltype时推导的返回类型是这样的?
如果我这样做,-> decltype(t1)我会得到预期的返回类型int。
c++ ×10
c++11 ×4
arrays ×2
lambda ×2
vector ×2
c++14 ×1
command-line ×1
csv ×1
file-io ×1
iostream ×1
large-files ×1
linux ×1
raii ×1
string ×1
templates ×1
unique-ptr ×1
while-loop ×1