小编bil*_*llz的帖子

std :: bind类成员函数

我有这个代码:

#include <iostream>
#include <functional>

struct Foo
{
        int get(int n) { return 5+n; }
};

int main()
{
        Foo foo;
        auto L = std::bind(&Foo::get, &foo, 3);

        std::cout << L() << std::endl;

        return 0;
}
Run Code Online (Sandbox Code Playgroud)

似乎这个:

auto L = std::bind(&Foo::get, &foo, 3);
Run Code Online (Sandbox Code Playgroud)

相当于:

auto L = std::bind(&Foo::get, foo, 3);
Run Code Online (Sandbox Code Playgroud)

为什么?

c++ c++11

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

我是否错误地使用默认参数?

我刚刚开始阅读C++的初学者书.我有一些java经验(但是说过,我从来没有在java中使用默认参数,说实话)

所以,如上所述,我的问题是默认参数..

这是我正在使用的代码片段:

#include <iostream>

using namespace std;

//add declaration
int add(int a, int b);

int main (void)
{
        int number1;

        cout << "Enter the first value to be summed: ";
        cin >> number1;
        cout << "\nThe sum is: " << add(number1) << endl;
}

int add(int a=10, int b=5)
{
        return a+b;
}
Run Code Online (Sandbox Code Playgroud)

我从g ++编译器得到的响应是:"函数'int add(int,int)'的参数太少了

我做错了吗?(我也用文字参数尝试过)

PS我似乎无法正常显示代码片段?系统有变化吗?

c++ function default-arguments

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

如何在std :: vector <string>中找到重复项并返回它们的列表?

所以如果我有一个像这样的单词的向量:

Vec1 = "words", "words", "are", "fun", "fun"
Run Code Online (Sandbox Code Playgroud)

结果列表:"有趣","文字"

我试图确定哪些单词是重复的,并返回1个副本的字母顺序矢量.我的问题是我甚至不知道从哪里开始,我发现唯一接近它的std::unique_copy是我不需要做的事情.具体来说,我输入的是std::vector<std::string>输出a std::list<std::string>.如果需要,我可以使用仿函数.

有人至少可以把我推向正确的方向吗?我已经尝试过阅读stl文档,但我现在只是"大脑"被阻止了.

c++ stl functor

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

C++ vector或Queue在内存和速度方面构建大Q.

我正在构建一个庞大的消息队列,并且只使用PUSH和POP,这样可以更高效地(矢量或队列)以最大速度维护大数据

struct MQStruct {
    wchar_t *serviceName; 
    int durability; 
    int msgType; 
    int msgHeader; 
    wchar_t *msgId; 
    wchar_t *payload; 
    int payloadSize; 
    int ttl; 
    int priority;
}MQStructObj;

vector<MQStruct> MQvector;
queue<MQStruct> MSQ;

int SendMessage(wchar_t *serviceName, int durability, int msgType, int msgHeader, wchar_t *msgId, wchar_t *payload, int payloadSize, int ttl, int priority) {

MQStructObj.serviceName=serviceName;
MQStructObj.durability=durability;
MQStructObj.msgType=msgType;
MQStructObj.msgHeader=msgHeader;
MQStructObj.msgId=msgId;
MQStructObj.payload=payload;
MQStructObj.payloadSize=payloadSize;
MQStructObj.ttl=ttl;
MQStructObj.priority=priority;

    //Which one is better (Vector or Queue) in term of memory, speed and why

MSQ.push(MQStructObj);

    //OR

MQvector.push_back(MQStructObj);


return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ queue performance vector

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

我如何从文件中读取第一行?

ifstream infile;

string read_file_name("test.txt");

infile.open(read_file_name);

string sLine;

    while (!infile.eof())
    {
        getline(infile, sLine);         
        cout << sLine.data() << endl;
    }

    infile.close();
Run Code Online (Sandbox Code Playgroud)

该程序打印文件中的所有行,但我想只打印第一行.

c++

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

从unsigned short转换为string c ++

如何使用C++将unsigned short转换为string?我有两个未签名的短变量:

    unsigned short major = 8, minor = 1;
Run Code Online (Sandbox Code Playgroud)

我想加入他们的字符串,看起来像:

    std::string version = major + "." + minor;
Run Code Online (Sandbox Code Playgroud)

我该怎么做?将提供一个小样本代码.

谢谢

c++ type-conversion

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

"必须具有类或枚举类型的参数"实际上意味着什么

我有一个头文件和一个.cpp文件.我需要为我的.h文件编写函数,但是在我完全完成一个骨架.cpp文件之前我得到一个错误.

Money.h

#ifndef MONEY_H
#define MONEY_H

#include <iostream>
#include <iomanip>

using namespace std;

class Money
{
public:
   Money(int dollars, int cents);
   Money operator+(const Money& b) const;
   Money operator-(const Money& b) const;
   Money operator*(double m) const;
   Money operator/(double d) const;

   void print() const;

private:
   int dollars;
   int cents;
};

#endif
Run Code Online (Sandbox Code Playgroud)

Money.cpp

#include "Money.h"

Money::Money(int dollars, int cents){

}
Money operator+(const Money& b) {

}
Money operator-(const Money& b) {

}
Money operator*(double m) {

}
Money operator/(double d) {

}

void …
Run Code Online (Sandbox Code Playgroud)

c++

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

STL迭代器std :: distance()错误

我有两个typedef:

typedef std::vector<int> Container;
typedef std::vector<int>::const_iterator Iter;
Run Code Online (Sandbox Code Playgroud)

在我考虑的问题,我执行一些操作Container Input,在那之后,我想计算std::distance(Input.begin(),itTarget),其中itTarget是的Iter类型.但是我得到了这个编译器错误no instance of function template "std::distance" matches the argument list,并且只有在转换之后,即std::distance(static_cast<Iter>(Input.begin()),itTarget)一切正常.

我想知道为什么会这样?

c++ iterator stl vector distance

6
推荐指数
2
解决办法
3401
查看次数

检查int或list <int>

任何人都可以让我知道实现这一目标的最佳方法.

说,我有一个模板功能

template<typename ARGUMENT>
void get_result(ARGUMENT &ag)
{

// arg can be a single object of a particular object or list of objects of that particular class. 
//rest

}
Run Code Online (Sandbox Code Playgroud)

有没有办法可以检查&ag是单个对象还是对象列表.此外,使用给定的模板界面.

如果答案是通过类接口以某种方式通过模板规范并不重要.唯一的问题是我不想指定对象类型或列表类型.

防爆.ag = int或ag = list

CB

c++

6
推荐指数
2
解决办法
263
查看次数

这是(枚举:char {})gcc bug吗?

在gcc-4.5下,它打印0,在gcc-4.6下,打印1.

#include <iostream>

enum VenueId: char {}; 
int
main (int argc, char ** argv)
{
  VenueId v = (VenueId)'P';
  std::cout << (v=='P') << std::endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ enums gcc c++11

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