小编ein*_*ica的帖子

如何在MySQL中模拟数组变量?

似乎是MySQL没有数组变量.我应该用什么呢?


似乎有两种选择建议:集类型标量临时表.我联系的问题暗示了前者.但是使用这些而不是数组变量是一种好习惯吗?或者,如果我使用集合,那么基于集合的成语相当于foreach什么?

mysql arrays variables set temp-tables

76
推荐指数
7
解决办法
29万
查看次数

C++中访问器方法(getter和setter)的约定

关于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++ getter setter accessor

72
推荐指数
4
解决办法
7万
查看次数

std :: lexical_cast - 有这样的事吗?

C++标准库是否定义了此函数,还是必须使用Boost?

我搜索网络除了Boost之外找不到任何东西,但我想我最好问一下这里.

c++ parsing casting std c++-standard-library

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

为什么C++标准库中没有transform_if?

当想要执行一个副本(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)

c++ c++-standard-library stl-algorithm

72
推荐指数
5
解决办法
2万
查看次数

"模板<>"vs"模板"没有括号 - 有什么区别?

假设我已经宣布:

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++模板的特定实例?

c++ templates template-specialization

72
推荐指数
2
解决办法
6198
查看次数

在 C++ 中限制“auto”是否违背了它的目的?

在 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

c++ auto c++-concepts c++20

72
推荐指数
3
解决办法
7730
查看次数

71
推荐指数
7
解决办法
6万
查看次数

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

在CUDA中,什么是内存合并,它是如何实现的?

什么是CUDA全局内存事务中的"合并"?经过我的CUDA指南后,我无法理解.怎么做?在CUDA编程指南矩阵示例中,逐行访问矩阵称为"coalesced"或col .. by col ..称为合并?哪个是正确的,为什么?

cuda definition memory-access

68
推荐指数
3
解决办法
4万
查看次数

当函数具有特定大小的数组参数时,为什么它被指针替换?

鉴于以下计划,

#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)
  1. 为什么数组作为指向第一个元素的指针传递?
  2. 它是C的遗产吗?
  3. 标准说什么?
  4. 为什么C++的严格类型安全性下降了?

c++ arrays standards sizeof function-parameter

65
推荐指数
2
解决办法
3万
查看次数