小编And*_* DM的帖子

lambda表达式中没有匹配的成员函数错误?

这对我来说是一个很奇怪的错误.检查以下代码:

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参数,我无法弄清楚编译器试图告诉我什么.有人能帮助我吗?

c++ lambda c++11

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

如何使用linux命令获取非常大的csv文件的第二列?

我在接受采访时得到了这个问题.我说我可以用java或python之类的xreadlines()函数来遍历整个文件并获取列,但是面试官希望我只使用linux cmd.我怎样才能做到这一点?

linux csv command-line large-files

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

我怎样才能立即运行lambda?

如何立即运行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)

c++ lambda c++11

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

ifstream :: binary和ios :: binary之间有区别吗?

我见过这样编写的代码:

ifstream fin;
fin.open("largefile.dat", ifstream::binary | ifstream::in);
Run Code Online (Sandbox Code Playgroud)

现在这让我感到困惑,上面的代码和下面的代码之间是否有任何区别使用ios::binaryios::in替换?

ifstream fin;
fin.open("largefile.dat", ios::binary | ios::in);
Run Code Online (Sandbox Code Playgroud)

c++ file-io iostream

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

代码块C++错误预期在枚举之前的主表达式

我是用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)

我只是不知道导致错误的是什么,或者我正在关注的教程是否存在问题?

c++

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

使用一个变量导航多维数组

我有一个 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 数组进行编码,如果不需要的话,我真的不想重写所有内容。

我用谷歌搜索了一下,没有找到解决方案。

c++ arrays

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

如何将对象添加到std :: vector <unique_ptr <obj >>?

问题:
如何将对象添加到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>> &&'

c++ raii vector unique-ptr c++11

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

在C ++中使用方括号或星号声明双精度数组

具有这样声明的变量:

双*变量;

我认为这与写作完全一样

双变量[];

然后一些方法在起作用;

如何获得double数组的长度?我的意思是,我如何知道的最后一个初始化/访问/编写的元素位于哪个位置variable

c++ arrays

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

while循环中的多个条件使用&&

什么有效:

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,对于上面的错误.

为什么在使用&&时添加另一个条件会产生错误的输出?

c++ while-loop

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

根据operator?: result推导模板返回类型

考虑这段代码:

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++ templates c++11 c++14

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

如何在C ++中的向量中找到子字符串

我想知道如何查找子字符串在包含行(字符串组)的向量中出现的次数。

c++ string vector

-3
推荐指数
1
解决办法
52
查看次数