小编Arc*_*man的帖子

C++ sizeof Vector是24?

我只是在乱搞并学习向量和结构,并且在某一点上,我尝试以字节为单位输出向量的大小.这是代码:

#include <iostream>
#include <vector>

struct Foo{
    std::vector<int> a;
};

int main()
{
    using std::cout; using std::endl;   

    Foo* f1 = new Foo;

    f1->a.push_back(5);
    cout << sizeof(f1->a) << endl;
    cout << sizeof(f1->a[0]) << endl;

    delete[] f1;
}
Run Code Online (Sandbox Code Playgroud)

输出是244.

显然第二行打印4,因为那是int的大小.但为什么另一个值24呢?向量是否占用24个字节的内存?谢谢!

c++ vector

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

C++ 11将`auto` Lambda更改为其他Lambda?

假设我有以下包含lambda的变量:

auto a = [] { return true; };
Run Code Online (Sandbox Code Playgroud)

我想稍后a回来false.我可以按照这个方针做点什么吗?

a = [] { return false; };
Run Code Online (Sandbox Code Playgroud)

此语法给出了以下错误:

binary '=' : no operator found which takes a right-hand operand of type 
'main::<lambda_a7185966f92d197a64e4878ceff8af4a>' (or there is no acceptable conversion)

IntelliSense: no operator "=" matches these operands
        operand types are: lambda []bool ()->bool = lambda []bool ()->bool
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这样的事情?我想将auto变量更改为不同的lambda.我是一个初学者,所以我可能会错过一些关于autolambdas的知识.谢谢.

c++ lambda auto c++11

22
推荐指数
2
解决办法
2056
查看次数

如何将r值std :: vector传递给函数?

我想要做的是std::vector通过直接在调用中放入一个数组来调用包含参数的函数.我不想创建一个向量然后将它传递给函数,但我想在函数中放置大括号.这是一般的想法:

void doSomething(std::vector<int> arr)
{
    std::cout << arr[0] << std::endl;
}

int main()
{
    doSomething({ 1, 2, 3 });
}
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误.我也试过使用lambda表达式,我不太熟悉,但这里是:

doSomething([]()->std::vector<int>{ return{ 1, 2, 3 }; });
Run Code Online (Sandbox Code Playgroud)

这不起作用.这是我不想要的:

std::vector<int> a {1, 2, 3};
doSomething(a);
Run Code Online (Sandbox Code Playgroud)

那我该怎么做呢?我真的希望我写的不是完全愚蠢的.

c++

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

QTextEdit减少“tab”键的缩进

我正在尝试使用Qt制作一个小型C++文本编辑器。当我在编辑器中按下键盘上的键时,该行的缩进量超出了必要的范围。我希望代码缩进大约 3 个空格,而不是看起来的 11 个空格。有什么办法可以改变tab键的功能吗?谢谢。"tab"

qt qtextedit

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

斯威夫特:UIButton vs UIView

在Swift中,似乎可以从a UIButton和a中实现类似的行为UIView.为按钮提供功能,addTarget可以调用,而addGestureRecognizer可以调用UIView.应该何时使用另一个?特别是,当涉及图像时,使用UIButton配对setImage还是UIImageView配对更好my_image_view.image = UIImage(...)

另外,UIButtona UIView不提供什么(反之亦然)?谢谢!

ios swift

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

C++结构值初始化

我正在搞乱结构,并注意到以下两个例子,只有一个有效.他们来了:

struct Test
{ 
    char *name; 
    int age; 
}; 

Test p1 = { "hi", 5 };
//works


struct Test
{ 
    char *name; 
    int age; 
}p1; 

p1 = { "hi", 5 };
//error
Run Code Online (Sandbox Code Playgroud)

为什么第一个编译而第二个编译不?不是任何一种方式p1的对象Test?谢谢.

c++

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

std :: string与模板一起使用,检查是否为空

我想使用一个接受类型的通用参数T的函数,并在函数内检查传入的变量是否为NULL.我可以简单地用这样的原始类型做到这一点:

if (var) doSomething();
Run Code Online (Sandbox Code Playgroud)

但是,为了检查它是否是一个std::string,我需要做:

if (!var.empty()) doSomething();
Run Code Online (Sandbox Code Playgroud)

检查传入参数的最佳,最通用的方法是NULL什么?我想使用所有原始类型和std::string.也许我可以使用typeid

c++

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

C++将std :: string传递给Pointer-to-C-String参数

我正在使用SDL中的一个函数,其中一个参数是类型的const GLchar* const*,所以为了调用它,我需要传入一个C字符串的引用,如下所示:

const char *str = "test";
glShaderSource(... , &str, ...);
Run Code Online (Sandbox Code Playgroud)

但是,我有一个std::string我想要传入的内容,并且做这样的事情会产生错误:

std::string str = "test";
glShaderSource(... , &str.c_str(), ...);
Run Code Online (Sandbox Code Playgroud)

我知道我可以简单地创建一个新const char*变量并将其保存为std::string:

const char *cstr = str.c_str();
Run Code Online (Sandbox Code Playgroud)

但有什么方法可以解决这个问题吗?我不喜欢制作一个新的变量.我尝试使用lambda但是没有用.

c++ sdl

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

Swift从闭包中获取返回值,并使用它从它内部的闭包返回

考虑以下:

func myClosure(_ my_object: MyObject, completion: @escaping (Bool) -> Void) {
    var bool: Bool
    ...
    completion(bool)
}

let my_filtered_objects = my_objects.filter { obj in
    myClosure(obj.id) { bool in
        return bool // doesn't return from the filter closure
    }
    return true // returns from the filter closure
}
Run Code Online (Sandbox Code Playgroud)

函数的闭包myClosure捕获了一个Bool我调用的函数bool,我想用bool它从闭包中返回filter.我把它放回到bool的范围内myClosure,但封闭filter对它一无所知.如何才能达到boolfilter关闭状态恢复所需的效果?谢谢.

swift

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

C++从.txt读取所有内容

我正在制作一个程序,您可以登录并注册.所有数据都存储在.txt文件中.我目前遇到的问题是,当我尝试从文件中获取所有数据时,我只得到文件的第一行/字符串.我希望得到.txt中的所有内容.这是一些代码:

什么在.txt中:

hello:world
foo:bar
usr:pass
Run Code Online (Sandbox Code Playgroud)

代码(作为测试):

ifstream check;
check.open("UsrInfo.txt");

string dataStr;
getline(check, dataStr);

cout << dataStr;
cout << endl;
Run Code Online (Sandbox Code Playgroud)

输出:

hello:world
Run Code Online (Sandbox Code Playgroud)

我希望输出是什么:

hello:world
foo:bar
usr:pass
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能解决这个问题?谢谢!

c++

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

C++这个语法是如何工作的?

我正在阅读一些源代码,我发现了一些看起来很古怪的代码.以下是已声明为已使用的单个函数的一个示例,并且此语法已被大量使用.

HINSTANCE hlib = LoadLibrary(L"ps3tmapi.dll");

//initial definition
typedef int(__cdecl *ProcessInfo)(int,UINT32, UINT32*, SNPS3PROCESSINFO*);

//some function created using what's above
ProcessInfo GetProcessInfo = (ProcessInfo)GetProcAddress(hlib, "SNPS3ProcessInfo");

//use of this function
GetProcessInfo(Target,ProcessID,buffsz,info);
Run Code Online (Sandbox Code Playgroud)

这绝不是有序的,只是来自源代码的片段.那么,这个语法到底是做什么的呢?我特意在第二条线上划过头来GetProcessInfo宣布.

为了清楚起见,我并不担心这段代码的含义(因为这里有很多东西在别处定义,所以你不知道它们是什么),我还没有看到这种语法.因此,如果有人能够解释它,那将非常感激.谢谢!

c++

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

C++函数返回&&运算符

我正在浏览一个库,我看到了这个函数:

bool CCAPI::IsConnected() const
{
    int state;
    int res = CCAPIGetConnectionStatus(&state);
    return (res == CCAPI_OK) && state;
}
Run Code Online (Sandbox Code Playgroud)

具体来说,这最后一行是什么意思?在我看来,它正在使用&&运算符返回两个变量.那么这里发生了什么?

c++

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

标签 统计

c++ ×9

swift ×2

auto ×1

c++11 ×1

ios ×1

lambda ×1

qt ×1

qtextedit ×1

sdl ×1

vector ×1