V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  MoYi123  ›  全部回复第 1 页 / 共 23 页
回复总数  442
1  2  3  4  5  6  7  8  9  10 ... 23  
因为指针可以是 null, 但是引用或者值不能是空.
估计是不想搞 optional, 就直接用指针了.
@itskingname 同意, 我也刚想说做的不够规范.
6 天前
回复了 yifangtongxing28 创建的主题 职场话题 最近金三银四有人换工作吗
最近只收到一个面试机会, 虽然到了最后的四面, 但是挂了.
不知道是不是竞争的人太多了...
2025 还在说 java 8 新特性的人是这样的.
20 天前
回复了 lysShub 创建的主题 Go 编程语言 b = append(b[:1], b...) 为什么能右移?
我觉得大概率是编译成 memmove 了.
22 天前
回复了 mythace 创建的主题 职场话题 太抽象了,绷不住了
你就静态页面给他部署上去得了.
@ireqhawk

静读天下我试过, 用遥控器基本操作不了, 或是是我下载的版本不对?
COIMICSCREEN 我搜了一下, 看界面也不像是用遥控器能操作的样子.
我三年前写的困难版本 (多生产者多消费者关 chan) https://github.com/mmooyyii/mmooyyii/blob/master/docs/go/mpmc_channel.md
32 天前
回复了 rihkddd 创建的主题 程序员 推荐一个面试算法题
@cooltechbs 排序后二分查找.
33 天前
回复了 rihkddd 创建的主题 程序员 推荐一个面试算法题
想起来一个类似的问题, erlang 里有这样一个删数组元素的方法 [1,3,2,2,3] -- [2,3] ==> [1,2,3]

erlang 的编译器团队在前 20 个大版本上面的算法都是 n^2 的, 近几年才改成 nlogn, 我也是服了.
据我了解是没这种东西的.
建议是先找产品砍掉这个需求, 实在不行就直接在 select list 里去掉不需要的, 然后相信优化器.
react 的是人写的.
go 的这个文档是通过代码里的注释直接生成的, 我从来不看这玩意.
只是高频更新不会导致死锁, 建议先把死锁的问题修好再看.
49 天前
回复了 rednose1037 创建的主题 C++ mac clion 调试怎么才能看到 stl 容器的值
lldb 和 gdb 和确定是不是 clion 的错误也没什么关系啊,
(lldb) print a
(std::unordered_map<int, std::vector<int> >) size=1 {
[0] = {
__cc_ = {
first = 1
second = size=3 {
[0] = 1
[1] = 2
[2] = 3
}
}
}
}

如果 lldb 能这样成功打印, 那肯定是 clion 的错误了, 直接找 jetbrains 就行了.
53 天前
回复了 rednose1037 创建的主题 C++ mac clion 调试怎么才能看到 stl 容器的值
直接用 gdb terminal print 能打印出来吗? 先确定一下是 gdb 的问题还是 clion 的.

如果确定是 clion 的问题, 可以找 jetbrains 的人帮你,
我之前也遇到过 clion 里的 gdb 有错误, 但是 gdb print 是好的, 后来删了一个 tmp 下的缓存文件就好了.
https://youtrack.jetbrains.com/issue/CPP-41050/Debugging-with-GDB-in-remote-toolchains-is-broken-by-CLion-update
62 天前
回复了 Niner 创建的主题 Java update 大家会允许这样写吗?
没并发问题吧, 这里只是用了一个比较蠢的办法去构造了 User u 而已.
69 天前
回复了 aqtata 创建的主题 C++ 这种情况如何消除几百个 if/else
想要酷可以参考 std::visit 的做法. 编译期生成一个 Invoke_array, 下面的例子是从运行期的 int 转特定类型到 lambda 中的例子. 稍微改改就能用于你的需求.

using namespace std;

constexpr std::array cached_type_ints = {1};

struct void_ptr {
int type;
void *ptr;
};

template <int T> struct Int2Type;

template <> struct Int2Type<1> {
using type = int;
};

template <typename Func, typename> class Visitor;

template <typename Func, std::size_t... pos>
class Visitor<Func, std::index_sequence<pos...>> {
public:
using return_type =
std::invoke_result_t<Func, Int2Type<cached_type_ints[0]>::type *>;
using fn_type = return_type (*)(Func &&, void *);

template <int16_t type_int>
static auto func_wrapper(Func &&func, void *ptr) -> return_type {
using real_type = typename Int2Type<type_int>::type;
return func(static_cast<real_type *>(ptr));
}

static auto visit(Func &&func, const void_ptr &item) -> return_type {
constexpr static std::array<fn_type, cached_type_ints.size()> invoke_map = {
func_wrapper<cached_type_ints[pos]>...};

size_t idx = std::ranges::lower_bound(cached_type_ints.begin(),
cached_type_ints.end(), item.type) -
cached_type_ints.begin();
if (idx >= invoke_map.size() or cached_type_ints[idx] != item.type)
[[unlikely]] {
throw std::bad_variant_access();
}
return invoke_map[idx](std::forward<Func>(func), item.ptr);
}
};

template <typename Func> auto visit(Func &&func, const void_ptr &item) {
using visitor = Visitor<decltype(func),
std::make_index_sequence<cached_type_ints.size()>>;
return visitor::visit(std::forward<Func>(func), item);
}

inline auto usage() {
auto item = void_ptr{.ptr = new int(1), .type = 1};
visit(
[](auto *ptr) {
print(*ptr);
delete ptr;
},
item);
}
71 天前
回复了 cj323 创建的主题 程序员 函数式编程适不适合游戏开发
用 erlang/elixir 的很大一部分是做游戏后端的.
问数据库优化的问题不贴 explain 就算了, 现在连 sql 都没有了.
1  2  3  4  5  6  7  8  9  10 ... 23  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1034 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 34ms · UTC 22:17 · PVG 06:17 · LAX 15:17 · JFK 18:17
Developed with CodeLauncher
♥ Do have faith in what you're doing.