这似乎是MySQL没有数组变量.我应该用什么呢?
似乎有两种选择建议:集类型标量和临时表.我联系的问题暗示了前者.但是使用这些而不是数组变量是一种好习惯吗?或者,如果我使用集合,那么基于集合的成语相当于foreach什么?
关于C++中的访问器方法的几个问题已经被问到,但没有一个能够满足我对这个问题的好奇心.
我试图尽可能避免使用访问器,因为像Stroustrup和其他着名的程序员一样,我认为一个类很多都是OO的标志.在C++中,我可以在大多数情况下为类添加更多的责任或使用friend关键字来避免它们.但在某些情况下,您确实需要访问特定的班级成员.
有几种可能性:
1.根本不要使用存取器
我们可以公开相应的成员变量.这在Java中是不行的,但对于C++社区似乎没问题.但是,我有点担心的情况是一个显式副本或一个对象的只读(const)引用应该返回,是夸大了吗?
2.使用Java样式的get/set方法
我不确定它是否来自Java,但我的意思是:
int getAmount(); // Returns the amount
void setAmount(int amount); // Sets the amount
Run Code Online (Sandbox Code Playgroud)
3.使用客观的C风格的get/set方法
这有点奇怪,但显然越来越普遍:
int amount(); // Returns the amount
void amount(int amount); // Sets the amount
Run Code Online (Sandbox Code Playgroud)
为了使其工作,您必须为您的成员变量找到不同的名称.有些人附加下划线,其他人加上"m_".我也不喜欢.
你使用哪种风格?为什么?
C++标准库是否定义了此函数,还是必须使用Boost?
我搜索网络除了Boost之外找不到任何东西,但我想我最好问一下这里.
当想要执行一个副本(1. doable with copy_if)但是从一个容器值到一个指向这些值的指针容器(2.可行transform)时,就出现了一个用例.
可用的工具,我不能做到这一点,在不到两个步骤:
#include <vector>
#include <algorithm>
using namespace std;
struct ha {
int i;
explicit ha(int a) : i(a) {}
};
int main()
{
vector<ha> v{ ha{1}, ha{7}, ha{1} }; // initial vector
// GOAL : make a vector of pointers to elements with i < 2
vector<ha*> ph; // target vector
vector<ha*> pv; // temporary vector
// 1.
transform(v.begin(), v.end(), back_inserter(pv),
[](ha &arg) { return &arg; });
// 2.
copy_if(pv.begin(), pv.end(), …Run Code Online (Sandbox Code Playgroud) 假设我已经宣布:
template <typename T> void foo(T& t);
Run Code Online (Sandbox Code Playgroud)
现在,有什么区别
template <> void foo<int>(int& t);
Run Code Online (Sandbox Code Playgroud)
和
template void foo<int>(int& t);
Run Code Online (Sandbox Code Playgroud)
语义?模板与无括号和模板与空括号在其他上下文中有其他语义吗?
在 C++20 中,我们现在能够将auto关键字限制为仅属于特定类型。因此,如果我有一些如下所示的代码,没有任何限制:
auto something(){
return 1;
}
int main(){
const auto x = something();
return x;
}
Run Code Online (Sandbox Code Playgroud)
这里的变量x被推导为一个int。然而,随着 C++20 的引入,我们现在可以将 约束auto为某种类型,如下所示:
std::integral auto something(){
return 0;
}
int main(){
const auto x = something();
return x;
}
Run Code Online (Sandbox Code Playgroud)
这不是违背了来这里的目的吗auto?如果我真的需要一个std::integral数据类型,我不能完全省略吗auto?我是否完全误解了使用auto?
什么是CUDA全局内存事务中的"合并"?经过我的CUDA指南后,我无法理解.怎么做?在CUDA编程指南矩阵示例中,逐行访问矩阵称为"coalesced"或col .. by col ..称为合并?哪个是正确的,为什么?
鉴于以下计划,
#include <iostream>
using namespace std;
void foo( char a[100] )
{
cout << "foo() " << sizeof( a ) << endl;
}
int main()
{
char bar[100] = { 0 };
cout << "main() " << sizeof( bar ) << endl;
foo( bar );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出
main() 100
foo() 4
Run Code Online (Sandbox Code Playgroud)