C++コードでHTTPリクエストを行うには、純粋なC++を使う方法と、外部ライブラリを使う方法がある。以下は、純粋なC++を使用してboostライブラリを使用してGETリクエストを行う方法の例です：

```
#include <boost/asio.hpp>
#include <iostream>

using namespace boost::asio;

int main()
{
io_context io_context;
ip::tcp::resolver resolver(io_context);
ip::tcp::resolver::query query("open-assistant.io", "https");
ip::tcp::resolver::iterator iter = resolver.resolve(query);

ip::tcp::socket socket(io_context);
connect(socket, iter);

std::string request = "GET /tasks/random HTTP/1.1\r\nHost: open-assistant.io\r\n\r\n";
write(socket, buffer(request));

boost::asio::streambuf response;
boost::asio::read_until(socket, response, "\r\n");

std::cout << &response;

return 0;
}
```

そして、外部ライブラリであるcURLを使ってGETリクエストを行う例を以下に示す：

```
#include <curl/curl.h>

int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
    curl_easy_setopt(curl, CURLOPT_URL, "https://open-assistant.io/tasks/random");

    /* Perform the request, res will get the return code */ 
    res = curl_easy_perform(curl);
    /* Check for errors */ 
    if(res != CURLE_OK)
        fprintf(stderr, "curl_easy_perform() failed: %s\n",
                curl_easy_strerror(res));

    /* always cleanup */ 
    curl_easy_cleanup(curl);
}

return 0; 
}
```

効率性という点では、cURLのような外部ライブラリを使用する方が、純粋なC++を使用するよりも効率的で便利であると一般的に考えられている。これは、低レベルの詳細の多くを抽象化し、HTTPリクエストを行うための高レベルのインターフェースを提供するためである。
Making an HTTP request in C++ code can be done either using pure C++ or by using an external library. Here is an example of how to use pure C++ to make a GET request using the boost library:

#include <boost/asio.hpp>
#include <iostream>

using namespace boost::asio;

int main()
{
io_context io_context;
ip::tcp::resolver resolver(io_context);
ip::tcp::resolver::query query("open-assistant.io", "https");
ip::tcp::resolver::iterator iter = resolver.resolve(query);

ip::tcp::socket socket(io_context);
connect(socket, iter);

std::string request = "GET /tasks/random HTTP/1.1\r\nHost: open-assistant.io\r\n\r\n";
write(socket, buffer(request));

boost::asio::streambuf response;
boost::asio::read_until(socket, response, "\r\n");

std::cout << &response;

return 0;
}

And here is an example of how to use an external library, cURL, to make a GET request:

#include <curl/curl.h>

int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl) {
    curl_easy_setopt(curl, CURLOPT_URL, "https://open-assistant.io/tasks/random");

    /* Perform the request, res will get the return code */ 
    res = curl_easy_perform(curl);
    /* Check for errors */ 
    if(res != CURLE_OK)
        fprintf(stderr, "curl_easy_perform() failed: %s\n",
                curl_easy_strerror(res));

    /* always cleanup */ 
    curl_easy_cleanup(curl);
}

return 0; 
}

In terms of efficiency, it is generally considered that using an external library like cURL is more efficient and convenient than using pure C++, as it abstracts away many of the low-level details and provides a higher-level interface for making HTTP requests.