我只是在乱搞并学习向量和结构,并且在某一点上,我尝试以字节为单位输出向量的大小.这是代码:
#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)
输出是24和4.
显然第二行打印4,因为那是int的大小.但为什么另一个值24呢?向量是否占用24个字节的内存?谢谢!
假设我有以下包含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的知识.谢谢.
我想要做的是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)
那我该怎么做呢?我真的希望我写的不是完全愚蠢的.
我正在尝试使用Qt制作一个小型C++文本编辑器。当我在编辑器中按下键盘上的键时,该行的缩进量超出了必要的范围。我希望代码缩进大约 3 个空格,而不是看起来的 11 个空格。有什么办法可以改变tab键的功能吗?谢谢。"tab"
在Swift中,似乎可以从a UIButton和a中实现类似的行为UIView.为按钮提供功能,addTarget可以调用,而addGestureRecognizer可以调用UIView.应该何时使用另一个?特别是,当涉及图像时,使用UIButton配对setImage还是UIImageView配对更好my_image_view.image = UIImage(...)?
另外,UIButtona UIView不提供什么(反之亦然)?谢谢!
我正在搞乱结构,并注意到以下两个例子,只有一个有效.他们来了:
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?谢谢.
我想使用一个接受类型的通用参数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?
我正在使用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但是没有用.
考虑以下:
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对它一无所知.如何才能达到bool从filter关闭状态恢复所需的效果?谢谢.
我正在制作一个程序,您可以登录并注册.所有数据都存储在.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)
我该怎么做才能解决这个问题?谢谢!
我正在阅读一些源代码,我发现了一些看起来很古怪的代码.以下是已声明为已使用的单个函数的一个示例,并且此语法已被大量使用.
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宣布.
为了清楚起见,我并不担心这段代码的含义(因为这里有很多东西在别处定义,所以你不知道它们是什么),我还没有看到这种语法.因此,如果有人能够解释它,那将非常感激.谢谢!
我正在浏览一个库,我看到了这个函数:
bool CCAPI::IsConnected() const
{
int state;
int res = CCAPIGetConnectionStatus(&state);
return (res == CCAPI_OK) && state;
}
Run Code Online (Sandbox Code Playgroud)
具体来说,这最后一行是什么意思?在我看来,它正在使用&&运算符返回两个变量.那么这里发生了什么?