GPT火了很久,被各种媒体吹上了天,但是因为工作原因,一直没有机会去真正的尝试,最近终于有了一天的空闲时间,就想着好好看看GPT当前到底能干啥,如下是我针对不同类别,分别提出不同问题,GPT给的回答,如果有兴趣可以看看。
1. 定性问题
对于一些定性的问题,GPT不仅仅是会把结果给你,而且还贴心的为你整理了一下展示格式。
2.情感问题
情感问题给的答案非常符合现有的价值观,几乎是标准的处理方式。
3. 旅游计划
让我非常惊讶,这是一个具体到小时的计划,特地去查了航班,确实有一班早上九点十分从杭州出发,落地是11点55分。
4. 购物指导
5. 编程问题
编程是一个非常复杂的问题,涉及的面比较广,所以这里举得例子可能不够全面,可能是因为例子比较简单的原因,GPT给的答案都非常好。
template <typename T>
class LockFreeQueue {
public:
// 构造函数
LockFreeQueue(size_t capacity): capacity_(capacity),
buffer_(new T[capacity]), head_(0), tail_(0) {}
// 析构函数
~LockFreeQueue() {
delete[] buffer_;
}
// 生产者函数,往队列尾部插入数据
bool Enqueue(const T& item) {
size_t head = head_.load(std::memory_order_acquire);
size_t tail = tail_.load(std::memory_order_relaxed);
if (tail + 1 == head || (tail + 1 == capacity_ && head == 0)) {
// 队列已满
return false;
}
buffer_[tail] = item;
tail_.store((tail + 1) % capacity_, std::memory_order_release);
return true;
}
// 消费者函数,从队列头部弹出数据
bool Dequeue(T& item) {
size_t tail = tail_.load(std::memory_order_acquire);
size_t head = head_.load(std::memory_order_relaxed);
if (head == tail) {
// 队列为空
return false;
}
item = buffer_[head];
head_.store((head + 1) % capacity_, std::memory_order_release);
return true;
}
private:
const size_t capacity_; // 缓冲区容量
T* const buffer_; // 缓冲区指针,使用const修饰,防止被修改
std::atomic<size_t> head_; // 队列头部
std::atomic<size_t> tail_; // 队列尾部
};
6. 失败的问答
当然,GPT绝对是有底线的,有些问题会因为做不了或者不能做的原因而拒绝回答。
7. 让人惊讶的回答
更多推荐
ChatGPT4使用体验
发布评论