vector<string> files
时间: 2024-06-15 07:05:02 浏览: 170
vector<string> files是一个C++标准库中的容器,用于存储一组字符串。它可以动态地调整大小,并且可以在任意位置插入、删除和访问元素。
使用vector<string> files可以方便地管理一组文件名或路径名。例如,可以将文件系统中的所有文件名存储在vector<string> files中,以便后续进行文件操作。
以下是vector<string> files的一些常用操作:
1. 添加元素:可以使用push_back()函数将新的字符串添加到vector的末尾。
2. 访问元素:可以使用下标运算符[]或at()函数来访问指定位置的字符串。
3. 删除元素:可以使用erase()函数删除指定位置的字符串。
4. 获取大小:可以使用size()函数获取vector中元素的个数。
5. 遍历元素:可以使用for循环或迭代器来遍历vector中的所有字符串。
相关问题
class SR_net { public: SR_net(string path, vector<int> input_size, bool fp32, bool cuda = true); private: vector<int64_t> Gdims; int Gfp32; Env env = Env(ORT_LOGGING_LEVEL_ERROR, "RRDB"); SessionOptions session_options = SessionOptions(); Session* Gsession = nullptr; vector<const char*> Ginput_names; vector<const char*> Goutput_names; vector<int> Ginput_size = {}; }; SR_net::SR_net(string path, vector<int> input_size, bool fp32, bool cuda) { this->Ginput_size = input_size; this->Gfp32 = fp32; clock_t startTime_, endTime_; startTime_ = clock(); session_options.SetIntraOpNumThreads(6); if (cuda) { OrtCUDAProviderOptions cuda_option; cuda_option.device_id = 0; cuda_option.arena_extend_strategy = 0; cuda_option.cudnn_conv_algo_search = OrtCudnnConvAlgoSearchExhaustive; cuda_option.gpu_mem_limit = SIZE_MAX; cuda_option.do_copy_in_default_stream = 1; session_options.AppendExecutionProvider_CUDA(cuda_option); } wstring widestr = wstring(path.begin(), path.end()); this->Gsession = new Session(env, widestr.c_str(), this->session_options); this->session_options.SetGraphOptimizationLevel(GraphOptimizationLevel::ORT_ENABLE_ALL); AllocatorWithDefaultOptions allocator; this->Ginput_names = { "input" }; this->Goutput_names = { "output" }; endTime_ = clock(); cout << " The model loading time is:" << (double)(endTime_ - startTime_) / CLOCKS_PER_SEC << "s" << endl; } int main() { vector<int> input_shape = {}; SR_net net("E:/prj/SR_C/onnx_file/rrdb_full.onnx", input_shape, true, true); vector<String> files; glob("E:/prj/超分样本/1", files, true); size_t num = files.size(); bool Moos = true; cout << "共读取了" << num << "张图片" << endl; cout << "--------------------------------" << endl; for (int i = 0; i < num; i++) { Mat srcimg = imread(files[i]); Mat SR_image = net.Detect(srcimg, Moos); imshow("input", srcimg); imshow("result", SR_image); imwrite("./output/" + to_string(i + 1) + ".png", SR_image); waitKey(0); } },在这段代码中,我如何把SR_net net("E:/prj/SR_C/onnx_file/rrdb_full.onnx", input_shape, true, true);这一行写到主函数的外面?
可以在 SR_net 类的定义中增加一个默认构造函数,并在这个构造函数中调用 SR_net(string path, vector<int> input_size, bool fp32, bool cuda) 构造函数,如下所示:
```c++
class SR_net {
public:
SR_net() : SR_net("E:/prj/SR_C/onnx_file/rrdb_full.onnx", {}, true, true) {}
SR_net(string path, vector<int> input_size, bool fp32, bool cuda = true);
// 其他成员函数和成员变量
};
int main() {
SR_net net;
// 其他代码
return 0;
}
```
这样,在主函数中就可以直接使用 SR_net net; 创建对象了。默认构造函数中的参数可以根据实际情况进行修改。
vector<string,string> files
C++ 中的 `vector` 是一种动态数组容器,可以存储多个元素,并且支持动态调整大小。然而,`vector` 只能存储一种类型的元素,不能直接存储两个不同类型的元素。如果你想存储键值对,可以使用 `std::pair` 或者自定义一个结构体来表示。
以下是使用 `std::pair` 存储键值对的示例:
```cpp
#include <iostream>
#include <vector>
#include <utility> // 包含 std::pair
int main() {
std::vector<std::pair<std::string, std::string>> files;
// 添加键值对到 vector
files.push_back(std::make_pair("file1", "data1"));
files.push_back(std::make_pair("file2", "data2"));
files.push_back(std::make_pair("file3", "data3"));
// 遍历 vector 并输出键值对
for (const auto& file : files) {
std::cout << "File: " << file.first << ", Data: " << file.second << std::endl;
}
return 0;
}
```
在上述示例中,我们创建了一个 `vector`,其中存储了多个键值对,每个键值对由两个 `std::string` 类型的元素组成。然后使用 `push_back` 函数将键值对添加到 `vector` 中。最后,通过遍历 `vector` 输出每个键值对的内容。
如果你希望存储更复杂的数据结构,可以自定义一个结构体,将需要的元素包含在结构体中,并使用该结构体作为 `vector` 的元素类型。
阅读全文