fn main(){
let s = String::from("ABCDEFGH");
let s1 = &s[0..3];
let s2 = &s[3..6];
println!("{} {}", s1, s2);
}
c++でsliceはないので、関数で書いている場合
#include <iostream>
#include <vector>
template<typename T>
void print(std::vector<T> const &v)
{
for (auto i: v) {
std::cout << i << ' ';
}
std::cout << std::endl;
}
template<typename T>
std::vector<T> slice(std::vector<T> const &v, int m, int n)
{
auto first = v.cbegin() + m;
auto last = v.cbegin() + n + 1;
std::vector<T> vec(first, last);
return vec;
}
int main()
{
std::vector<int> v = {1, 2, 3, 4, 2, 2, 4, 6, 5};
int m = 4, n = 7;
std::vector<int> sub_vec = slice(v, m, n);
print(sub_vec);
return 0;
}
fn print(v: Vec<i32>) {
for &i in & v {
print!("{} ", &i);
}
print!("\n");
}
fn slicing(v: Vec<i32>, m: i32, n: i32) -> Vec<i32>
{
let vec = &v[m..n];
return vec.to_vec();
}
fn main(){
let mut vect = vec![1, 2, 3, 4, 2, 2, 4, 6, 5];
let v = slicing(vect, 4, 7);
print(v);
}
>> slice indices are of type `usize` or ranges of `usize`
これでなぜ引数i32がエラーになるか理解できん…