1. 通过传递引用,修改原始变量的值
struct UpdateItem {
std::string id; // Unique identifier for the record
std::string userId; // User's ID
std::string userName; // User's name
std::string userDept; // User's department
};
int getmessade() {
std::vector<UpdateItem> items; // 声明 items 向量// 将 JSON 对象转换为字符串std::string postFields = j.dump();// 发送请求
SendPostRequest( items); // 将 items 向量作为参数传递}void SendPostRequest(std::vector<UpdateItem>& items) {ParseAndStoreResponse(items);}void ParseAndStoreResponse(std::vector<UpdateItem>& items) {for (const json& item : jsonResponse.at("insertList")) {UpdateItem updateItem;// 使用 at() 方法安全地访问 JSON 键值,并使用 get<>() 进行类型转换updateItem.id = item.at("id").get<std::string>();updateItem.userId = item.at("userId").get<std::string>();updateItem.userName = item.at("userName").get<std::string>();updateItem.userDept = item.at("userDept").get<std::string>();items.push_back(updateItem);}
}
传递std::vector<UpdateItem> items;参数
int getmessade()
{
std::vector<UpdateItem> items;
SendPostRequest( items); // 将 items 向量作为参数传递
}void SendPostRequest(std::vector<UpdateItem>& items)
{
ParseAndStoreResponse(items);
}void ParseAndStoreResponse(std::vector<UpdateItem>& items)
{
}
将 items
作为参数传递给函数时,实际上发生的是向量的拷贝。然而,由于传递的是 std::vector
的引用(std::vector<UpdateItem>& items
),在函数内部对 items
所做的任何修改都会反映到原始向量上。这是因为引用提供了对原始对象的间接访问。
2.避免复制,提升效率
const std::string& response:int getmessade() {std::string postFields = j.dump();SendPostRequest(postFields);
} void SendPostRequest(const std::string& postField) {
-
避免复制:使用引用传递(尤其是对于大型数据结构,如
std::string
)可以避免在函数调用时复制整个字符串,从而提高性能。 -
不变性:
const
修饰符确保函数内不能修改传入的字符串,保护数据不被意外更改。